Javascript 比较MongoDB中两个未排序的集合
我试图比较两个集合中的大量文档。据估计,我在这两个集合中的每一个集合中都有大约1300个文档 我想在比较两个集合后生成一个差异比较报告我不需要确切指出缺少了什么或添加了什么新内容,我只需要能够确定这两个文档之间实际上存在一些差异。是的,除了Mongo的Javascript 比较MongoDB中两个未排序的集合,javascript,mongodb,Javascript,Mongodb,我试图比较两个集合中的大量文档。据估计,我在这两个集合中的每一个集合中都有大约1300个文档 我想在比较两个集合后生成一个差异比较报告我不需要确切指出缺少了什么或添加了什么新内容,我只需要能够确定这两个文档之间实际上存在一些差异。是的,除了Mongo的ObjectId(“\u id”),我对每个文档都有一个唯一的标识符 注意:我已经使用非规范化数据模型实现了数据库,这意味着我已经嵌入了文档(文档中的文档) 您认为实施解决方案的最佳方式是什么 提前感谢您的时间撒玛利亚人 您应该在您关心的所有字段上
ObjectId(“\u id”)
,我对每个文档都有一个唯一的标识符
注意:我已经使用非规范化数据模型实现了数据库,这意味着我已经嵌入了文档(文档中的文档)
您认为实施解决方案的最佳方式是什么
提前感谢您的时间撒玛利亚人 您应该在您关心的所有字段上使用和$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+用于查找的语法。是否假设每个文档(带有唯一标识符)都在两个集合中?或者,是否有一种不同的方式“连接”两个假定匹配的文档?这将帮助您找到解决方案[@tomslabbaert是的,具有相同唯一标识符的两个文档将出现在两个集合中,也就是说,两个集合中的文档数量相等。我敢问这样一个问题:为什么两个集合中都有相同的文档?听起来像是要将它们放在一个集合中,并添加一个附加字段。@MarkusWMahlberg这不是same文档。假设第二个文档(来自第二个集合)中某个键的“值”已更改。基本上,第二个集合中的文档可能会更新第一个集合中的值。