首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongo DB集合中唯一文档的查询

mongo DB集合中唯一文档的查询
EN

Stack Overflow用户
提问于 2022-11-07 05:58:44
回答 1查看 26关注 0票数 0

我需要一个查询,只复制唯一的文件从"A“集合到"B”集合。我将创建"B“集合的索引,然后将唯一的文档从"A”复制到"B“集合。

"A“藏书有近3671945份文件。

"A“集合Mongo DB文件结构:

代码语言:javascript
复制
    {
        "_id" : ObjectId("5d654ed25616a9d461bc0a91"),
        "aC" : "AN",
        "aI" : "ABCD",
        "aN" : "000000000001",
        "aT" : "AB",
        "pD" : "2022-11-07",
        "transaction" : {
            "seqNo" : 1,
            "tC" : "S"
        }
    },
    {
        "_id" : ObjectId("5d654ed25616a9d461bc0a93"),
        "aC" : "AN",
        "aI" : "ABCD",
        "aN" : "000000000001",
        "aT" : "AB",
        "pD" : "2022-11-07",
        "transaction" : {
            "seqNo" : 1,
            "tC" : "S"
        }
    },
    {
        "_id" : ObjectId("5d654ed25616a9d461bc0a92"),
        "aC" : "AN",
        "aI" : "ABCD",
        "aN" : "000000000002",
        "aT" : "AB",
        "pD" : "2022-11-08",
        "transaction" : {
            "seqNo" : 2,
            "tC" : "S"
        }
    }

现在,我将在"B“集合上创建主索引,如下所示,

代码语言:javascript
复制
    {
    "aC" : 1,
    "aI" : 1,
    "aN" : 1,
    "aT" : 1,
    "transaction.seqNo" : 1,
    "transaction.tC" : 1,
    "pD" : 1
    }

请您帮助我查询唯一的文档,从"A“集合到"B”集合,基于"B“集合上启用的索引?

在查询方面需要帮助。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-11-07 08:25:59

使用$group$first对每个分组选择一个文档。保存$$ROOT,然后用保存的$$ROOT替换。最后使用$merge保存到集合B。

代码语言:javascript
复制
db.collection.aggregate([
  {
    "$group": {
      "_id": {
        "aC": "$aC",
        "aI": "$aI",
        "aN": "$aN",
        "aT": "$aT",
        "seqNo": "$transaction.seqNo",
        "tC": "$transaction.tC",
        "pD": "$pD"
      },
      doc: {
        $first: "$$ROOT"
      }
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$doc"
    }
  },
  {
    "$merge": {
      "into": "B",
      "on": "_id",
      "whenMatched": "replace"
    }
  }
])

蒙戈

附带注意:您可能希望在创建索引之前执行插入,以提高写入速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74342487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档