在mongoDB中合并两个数组字段

 shahua1111 发布于 2023-01-29 15:31

我有以下结构的集合

{
   _id : ObjectId("52f0795a58c5061aa34d436a"),
   "attribute1" : [1, 3, 6, 7],
   "attribute2" : [2, 4, 6, 8]
}

有没有什么办法可以合并这两个属性,同时使用mongoDB中的聚合查询删除重复项?我需要结果是这样的:

{
   _id : ObjectId("52f0795a58c5061aa34d436a"),
   "attribute3" : [1, 3, 6, 7, 2, 4, 8]
}

styvane.. 6

使用.aggregate()方法和$setUnion操作员.

db.collection.aggregate([
    { "$project": { 
        "attribute3": { "$setUnion": [ "$attribute1", "$attribute2" ] } 
    }}
])

产量:

{
    "_id" : ObjectId("52f0795a58c5061aa34d436a"),
    "attribute3" : [8, 4, 2, 6, 3, 7, 1]
}


Neil Lunn.. 5

如果要修改数据,一旦读取了其中一个数组的内容,就可以将$ addToSet与$ each修饰符一起使用.这些将是单独更新,因为您无法在更新操作中引用文档的另一个元素.

如果您真的只想将其用于聚合并且可以等待,那么即将发布的MongoDB版本会将新的集合运算符添加到聚合中.特别是$ setUnion会完全按照你的意愿行事.

2 个回答
  • 如果要修改数据,一旦读取了其中一个数组的内容,就可以将$ addToSet与$ each修饰符一起使用.这些将是单独更新,因为您无法在更新操作中引用文档的另一个元素.

    如果您真的只想将其用于聚合并且可以等待,那么即将发布的MongoDB版本会将新的集合运算符添加到聚合中.特别是$ setUnion会完全按照你的意愿行事.

    2023-01-29 15:35 回答
  • 使用.aggregate()方法和$setUnion操作员.

    db.collection.aggregate([
        { "$project": { 
            "attribute3": { "$setUnion": [ "$attribute1", "$attribute2" ] } 
        }}
    ])
    

    产量:

    {
        "_id" : ObjectId("52f0795a58c5061aa34d436a"),
        "attribute3" : [8, 4, 2, 6, 3, 7, 1]
    }
    

    2023-01-29 15:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有