MongoDb根据两个字段的值比较查找文档

cwdobuhd  于 2023-03-01  发布在  Go
关注(0)|答案(1)|浏览(144)

我面临挑战,先看文件

{
  "FullName": "Sarajane Cazares",
  "FromTime": "2023-02-21T19:00:00Z",
  "ToTime": "2023-02-21T20:00:00Z",
  ...
}

{
  "FullName": "Marissa",
  "FromTime": "2023-02-21T20:00:00Z",
  "ToTime": "2023-02-21T21:00:00Z",
  ...
}

正如您所看到的,doc1的ToTime和doc2的FromTime是相同的,我需要找到所有ToTime和FromTime值相同的文档。
可以使用MongoDB吗?
谢谢

flvlnr44

flvlnr441#

恐怕通过简单的匹配是不可能的,但是您可以为它编写一个简短的聚合管道。

db.collection.aggregate([
  {
    "$lookup": {
      "from": "collection",
      "localField": "ToTime",
      "foreignField": "FromTime",
      "as": "docs"
    }
  },
  {
    "$match": {
      $expr: {
        "$gt": [
          {
            "$size": "$docs"
          },
          0
        ]
      }
    }
  },
])

在这个管道中,我们对集合执行一个自连接,比较ToTimeFromTime字段,然后过滤掉文档,其中不存在具有相同ToTimeFromTime的文档。
Playground link.

相关问题