我有一个像这样的芒果藏品。
[{
"name": "foo",
"place": "Paris",
"other": {
"var1": "asdf",
"var2": "asdf",
"var3": "sdfw",
etc....
}
},{
"name": "Bar",
"place": "Paris",
"other": {
"var1": "asdf",
"var2": "asdf",
etc....
}
}]我需要将数据显示如下:
[{
"name": "foo",
"place": "Paris",
"var1": "asdf",
"var2": "asdf",
"var3": "sdfw",
etc...
},{
"name": "Bar",
"place": "Paris",
"var1": "asdf",
"var2": "asdf",
etc....
}]所以我希望移除其他的对象,但是把所有的值都保存在里面。实现这一目标的最佳途径是什么。我可以使用Python3或mongo聚合。
发布于 2018-12-18 09:22:39
您可以使用下面的aggregation使用$replaceRoot和$mergeObjects
db.collection.aggregate([
{ "$replaceRoot": {
"newRoot": { "$mergeObjects": ["$other", "$$ROOT"] }
}},
{ "$project": { "other": 0 }}
])发布于 2018-12-18 09:30:14
在Python中这样做在技术上是可能的,而且非常简单:
for obj in collection:
obj.update(obj.pop("other"))但是,应该更快地将其留给mongodb,正如Anthony Winzlet的回答所解释的那样。
https://stackoverflow.com/questions/53829741
复制相似问题