比较MongoDB中两个未排序的集合

时间:2019-04-29 04:04:59

标签: javascript mongodb

我正在尝试比较两个集合中的大量文档。为了给您一个估计,我在两个馆藏中每个都有大约1300个文档。

我想在比较两个集合后生成差异比较报告。 我不需要确切指出缺少的内容或添加了哪些新内容,我只需要能够确定实际上两个文档之间就存在一些差异。是的,除了Mongo的ObjectId ("_id")之外,我对每个文档都有唯一的标识符。

注意:我已经使用非规范化数据模型实现了数据库,这意味着我已经嵌入了文档(文档中的文档)。

您说什么是实现相同解决方案的最佳方法?

提前感谢您的时间撒玛利亚人!

1 个答案:

答案 0 :(得分:2)

您应该在关心的所有字段上使用$lookup和$ eq。

db.collection1.aggregate([
   {
      $lookup:
         {
           from: "collection2",
           let: { unique_id: "$unique_id", field1: "$field", field2: "$field", ... },
           pipeline: [
              { $match:
                 { $expr:
                    { $and:
                       [
                         { $eq: [ "$unique_id_in_2",  "$$unique_id" ] }
                         { $eq: [ "$field_to_match",  "$$field1" ] },
                         { $eq: [ "$field_to_match.2",  "$$field2" ] }
                       ]
                    }
                 }
              },
           ],
           as: "matches"
         }
    },
   {
     $match: {
         'matches.0': {$exists: false}
      }
   }
])

** mongo 3.6+语法用于查找。