我的文档有一个字段symptoms
,它是一个数组数组。
我想$unwind
并$addToSet
删除重复的项目,
然后只需更新文档。怎么做 ?
文档
"symptoms": [
[
"A481 ",
"A48 ",
" "
],
[
"A48177 ",
"A48 ",
" "
]
]
预期输出
"symptoms":
[
"A481 ",
"A48 ",
"A48177 ",
" "
]
实际上我的文档有数百个字段,如何更新symptoms
并且不影响其他字段值,谢谢
答案 0 :(得分:3)
您需要$unwind
两次symptoms
数组,并使用$project
排除_id
字段。您可以使用$out
在新集合中写入结果或替换现有集合。
db.collection.aggregate(
[
{ "$unwind": "$symptoms" },
{ "$unwind": "$symptoms" },
{ "$group": {
"_id": "$_id",
"symptoms": { "$addToSet": "$symptoms" }
}
},
{ "$project": { "_id": 0, "symptoms": 1 }},
{ "$out": "collection" }
]
)
现在
db.collection.find()
给你:
{ "_id" : ObjectId("553a244bea67317760a44347"), "symptoms" : [ "A48177 ", " ", "A48 ", "A481 " ] }