【问题标题】:MongoDb find documents based on values comparison of two fieldsMongoDb 根据两个字段的值比较查找文档
【发布时间】:2023-02-21 18:31:13
【问题描述】:

我正面临挑战。我们先看文档

{
  "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 吗?

谢谢

【问题讨论】:

    标签: mongodb mongodb-query


    【解决方案1】:

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

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

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

    Playground link.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      相关资源
      最近更新 更多