我正在尝试比较两个集合中的大量文档。为了给您一个估计,我在两个馆藏中每个都有大约1300个文档。
我想在比较两个集合后生成差异比较报告。 我不需要确切指出缺少的内容或添加了哪些新内容,我只需要能够确定实际上两个文档之间就存在一些差异。是的,除了Mongo的ObjectId ("_id")
之外,我对每个文档都有唯一的标识符。
注意:我已经使用非规范化数据模型实现了数据库,这意味着我已经嵌入了文档(文档中的文档)。
您说什么是实现相同解决方案的最佳方法?
提前感谢您的时间撒玛利亚人!
答案 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+语法用于查找。