假设我有以下文档结构:
{
"name": "myProduct",
"perspectives" : [
{
"name": "p1",
"views" : [
{
"name": "v1"
},
{
"name": "v2"
}
]
},
{
"name": "p2",
"views" : [
{
"name": "v1"
},
{
"name": "v2"
}
]
}
]
}如何更新文档结构,为每个视图添加一个"alias“字段?
基本上,我希望做一些类似perspectives.views.alias的事情:"av1“代表所有perspectives.views.name:"v1”。
结果结构将如下所示:
{
"name": "myProduct",
"perspectives" : [
{
"name": "p1",
"views" : [
{
"name": "v1",
"alias": "av1"
},
{
"name": "v2",
"alias": "av2"
}
]
},
{
"name": "p2",
"views" : [
{
"name": "v1",
"alias": "av1"
},
{
"name": "v2",
"alias": "av2"
}
]
}
]
}为了澄清,我想这样做:
foreach (view in product.perspectives.views)
{
if (view.name == "p1")
view.add("alias", "av1");
}发布于 2010-08-27 19:05:25
您必须遍历您的文档、每个文档中的透视图以及每个透视图中的视图。然后更新视图并保存更新后的文档。下面这样的代码应该能起到作用:
db.products.find().forEach(function (product) {
product.perspectives.forEach(function (perspective) {
perspective.views.forEach(function (view) {
view.alias = "a" + view.name;
})
});
db.products.save(product);
})您可以将此函数粘贴到Mongo shell中并从那里运行它。或者,您可以将其保存在一个名为updateProducts.js的文件中,然后使用Mongo shell运行该文件:
mongo nameOfDatabase updateProducts.js该函数将在服务器上执行,因此它应该相当快。
https://stackoverflow.com/questions/3579049
复制相似问题