我在MongoDB中有一个大约有500K文档的DB。我的DB有一个字段number
,从1开始并不断增加。在我统计了文档总数后,我意识到有些文档丢失了(最后一个number
字段大于文档总数,而不是相等(。如何检查丢失的文档?文件的格式为:
{
"_id" : ObjectId("abc"),
"number" : 499661
}
您可以尝试这种方法。假设您有这些缺少编号1
和4
:的文档
{ number: 0 }
{ number: 2 }
{ number: 3 }
{ number: 5 }
{ number: 6 }
要查找丢失的两个数字,请尝试以下聚合:
db.test.aggregate([
{
$group: {
_id: null,
nums: { $push: "$number" }
}
},
{
$project: {
_id: 0,
missing_numbers: { $setDifference: [ { $range: [ 0, 7 ] }, "$nums" ] }
}
},
])
输出:{ "missing_numbers" : [ 1, 4 ] }