Meteor:更新文档数组中的嵌套对象
Meteor: Update nested object in document array
我尝试更新文档中的特定对象。在本例中,我想用group.id = 'fdsfsFDSFdsfFdsFd'
和data.id = 'qqdWSdksFVfSVSSCD'
更改对象。
这意味着我想要用var newData = { "id" : "qqdWSdksFVfSVSSCD", "new one" : "anything" }
更新对象{ "id" : "qqdWSdksFVfSVSSCD", "note 2" : "text" }
。
{
"_id" : "wLXDvjDvbsxzfxabR",
"group" : [
{
"id" : "dfDFSfdsFDSfdsFws",
"title" : "title 1",
"data" : [
{
"id" : "efBDEWVvfdvsvsdvs",
"note" : "text"
}
]
},
{
"id" : "fdsfsFDSFdsfFdsFd",
"title" : "title 2",
"data" : [
{
"id" : "WVvfsvVFSDWVDSVsv",
"note 1" : "text"
},
{
"id" : "qqdWSdksFVfSVSSCD",
"note 2" : "text"
},
{
"id" : "MZgsdgtscdvdsRsds",
"note 3" : "text"
}
]
}
]
}
那么我该如何访问这个对象呢?
Collection.update(
{ _id: 'wLXDvjDvbsxzfxabR' },
{ $set: { group.data: newData } } // group: fdsfsFDSFdsfFdsFd, data: qqdWSdksFVfSVSSCD
)
我不想让它更新嵌套数组元素。。。
如果要更新数组中的特定元素,则必须将其包含在查询中。此外,当在嵌套对象中进行查询时,您应该将查询用引号括起来。
// Update element in array with id "dfDFSfdsFDSfdsFws"
Collection.update(
{ _id: "wLXDvjDvbsxzfxabR", "group.id": "dfDFSfdsFDSfdsFws"},
{$set: { "group.data": newData }}
);
David的答案很接近:
Collection.update(
{ _id: "wLXDvjDvbsxzfxabR", "group.data.id": "qqdWSdksFVfSVSSCD"},
{$set: { "group.data": newData }}
);
如上所述,现在不可能更新数组中的嵌套数组。
如果可以的话,我建议您更改文档架构,以便删除数组中的嵌入数组。您可以将一个数组更改为JSON对象:
{
"_id" : "wLXDvjDvbsxzfxabR",
"group" : [
{
"id" : "dfDFSfdsFDSfdsFws",
"title" : "title 1",
"data" : {
"efBDEWVvfdvsvsdvs": {
"note" : "text"
}
}
},
{
"id" : "fdsfsFDSFdsfFdsFd",
"title" : "title 2",
"data" : {
"WVvfsvVFSDWVDSVsv": {
"note 1" : "text"
},
"qqdWSdksFVfSVSSCD": {
"note 2" : "text"
},
"MZgsdgtscdvdsRsds": {
"note 3" : "text"
}
}
}
]
}
有了这样的模式,您可以用这样的查询更新数据字段中的特定对象:
db.collection.update(
{'group.id': 'fdsfsFDSFdsfFdsFd'},
{$set: {'group.$.data.qqdWSdksFVfSVSSCD': {"new one" : "anything"}}}
)
相关文章:
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- 如何打印嵌套对象的所有值
- 设置嵌套对象属性的更好方法
- 嵌套对象结构
- 如何递归地获取嵌套对象中所有子对象的列表
- 更改嵌套对象的父子相关id
- 如何通过json对象数组为嵌套对象赋值
- Ember.js(2.5.0)如何设置嵌套对象值
- 嵌套对象文本访问父级
- 如何对两个嵌套对象进行排序
- 在javascript中使用方括号表示法的嵌套对象
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- 更新嵌套对象的多个字段
- MongoDB嵌套对象数组后查询
- 在流星中插入嵌套对象
- 将嵌套对象数据添加到窗体中
- Chai深度包含了对嵌套对象的断言
- 使用Angular.js解析JSON中的嵌套对象数组
- 如何以编程方式添加到可变嵌套对象中
- Javascript嵌套对象访问根级别