簡體   English   中英

比較兩個集合與一個字段 Mongodb

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM