Sar*_*air 2 mongodb mongodb-query aggregation-framework
我有以下结构的集合
{
_id : ObjectId("52f0795a58c5061aa34d436a"),
"attribute1" : [1, 3, 6, 7],
"attribute2" : [2, 4, 6, 8]
}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以合并这两个属性,同时使用mongoDB中的聚合查询删除重复项?我需要结果是这样的:
{
_id : ObjectId("52f0795a58c5061aa34d436a"),
"attribute3" : [1, 3, 6, 7, 2, 4, 8]
}
Run Code Online (Sandbox Code Playgroud)
使用.aggregate()方法和$setUnion操作员.
db.collection.aggregate([
{ "$project": {
"attribute3": { "$setUnion": [ "$attribute1", "$attribute2" ] }
}}
])
Run Code Online (Sandbox Code Playgroud)
产量:
{
"_id" : ObjectId("52f0795a58c5061aa34d436a"),
"attribute3" : [8, 4, 2, 6, 3, 7, 1]
}
Run Code Online (Sandbox Code Playgroud)
如果要修改数据,一旦读取了其中一个数组的内容,就可以将$ addToSet与$ each修饰符一起使用.这些将是单独更新,因为您无法在更新操作中引用文档的另一个元素.
如果您真的只想将其用于聚合并且可以等待,那么即将发布的MongoDB版本会将新的集合运算符添加到聚合中.特别是$ setUnion会完全按照你的意愿行事.