【问题标题】:Comparing two Collections with a field Mongodb比较两个集合与一个字段 Mongodb
【发布时间】:2021-12-11 10:22:25
【问题描述】:

我有两个集合,包含 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 万行效率不高。

我还有什么选择?

【问题讨论】:

    标签: mongodb collections mongo-shell


    【解决方案1】:

    我认为你有同样的问题 link。你可以使用 $lookup 聚合函数来连接两个表并取一些你需要的值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多