[英]Comparing two Collections with a field Mongodb
我有兩個包含 1500 萬多個 id 結果的集合,我想比較這兩個集合,以便我可以返回不在 colb 中的可樂結果集
cola 有 1450 萬個文件,colb 有 15.5 個文件:
可樂的例子
{
"_id" : "123"
},
{
"_id" : "45"
}
colb 示例
{
"_id" : "123"
},
{
"_id" : "456"
},
{
"_id" : "4"
}
我希望他的結果是
{
"_id" : "456"
},
.
.
.
{
"_id" : "4"
}
使用 $lookup 會掛起並在 16mb 過大時使用明顯的錯誤。 我也使用了聚合和 $nin 但因為聚合始終是一個對象, $nin 因為它期望一個數組而出錯。
掛起,永遠不會結束。
db.cola.aggregate([
{
$lookup: {
from: "colb",
localField: "ID",
foreignField: "ID",
as: "ID_match"
}
},
{
$match: {
$expr: {
$eq: [ { "$size": "$ID_match" }, 0 ]
}
}
}
])
檢測到循環依賴
var a = db.cola.aggregate({$group: {_id: "$ClaimID"}});
db.cola.find({ID: {$nin: a}})
我還寫了一個 JS 循環,但循環 1500 萬行效率不高。
我還有什么選擇?
我認為您有與此鏈接相同的問題。 你可以使用 $lookup 聚合函數來連接兩個表並取一些你需要的值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.