繁体   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