raj*_*war 7 mongodb mongodb-query
我试图更新(添加,如果不存在)一个属性到mongodb文档中的数组中的每个对象.例如
我的文件:
{
"_id" : "1",
student : [
{
"name" : "rajesh",
"rollno" : 1
},
{
name" : "rajesh2",
"rollno" : 2
},
{
name" : "rajesh3",
"rollno" : 3,
class : 6
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想将属性'class'添加到student数组中的所有对象.我怎么能在mongodb中这样做.
是的,不是.
如果您知道数组中项目的索引,这相对简单:
db.collection.update(
{ "_id": 1 },
{ "$set": {
"student.0.class": 4,
"student.1.class": 5,
"student.2.class": 6
}}
)
Run Code Online (Sandbox Code Playgroud)
但是如果你真的想要更新所有未知长度的数组值,这在单次更新中是不可能的,所以你需要实际检索文档并首先修改整个数组:
db.collection.find({ _id: 1}).forEach(function(doc) {
for (var i=0; i < doc.student.length; i++) {
doc.student[i] = newValue;
}
db.collection.update(
{ _id: doc._id },
{ "$set": { "student": doc.student } }
);
})
Run Code Online (Sandbox Code Playgroud)
或者基本上沿着这些方向的一些方法
适当地了解它们的局限性和代码.
| 归档时间: |
|
| 查看次数: |
2511 次 |
| 最近记录: |