Javascript mongoDB:更新嵌套数组对象
我想更新id为Javascript mongoDB:更新嵌套数组对象,javascript,mongodb,Javascript,Mongodb,我想更新id为BAHx9KeKjuMePce6f的嵌套对象: { "_id" : "sgG6G9XTvvjj7uxwQ", "target" : [ { "title" : "content", "id" : "ePce6fBAHx9KeKjuM" }, { "title" : "content", "id" : "BAHx9KeKjuM
BAHx9KeKjuMePce6f
的嵌套对象:
{
"_id" : "sgG6G9XTvvjj7uxwQ",
"target" : [
{
"title" : "content",
"id" : "ePce6fBAHx9KeKjuM"
},
{
"title" : "content",
"id" : "BAHx9KeKjuMePce6f" <--
}
]
}
结果应该是:
{
"_id" : "sgG6G9XTvvjj7uxwQ",
"target" : [
{
"title" : "content",
"id" : "ePce6fBAHx9KeKjuM"
},
{
"title": "new",
"one": "more",
"id" : "BAHx9KeKjuMePce6f"
}
]
}
为了更新数组中的特定元素,可以使用mongodb 请尝试以下查询:
var newData = { title: "new", one: "more", id: 'BAHx9KeKjuMePce6f' };
Collection.update(
{ _id: 'sgG6G9XTvvjj7uxwQ', 'target.id': 'BAHx9KeKjuMePce6f' },
{ $set: { 'target.$': newData } }
);
您需要使用位置参数
$
来指示要更新数组元素,而不是文档的根,请参见:
var newData = { title: "new", one: "more", id: 'BAHx9KeKjuMePce6f' };
Collection.update(
{ _id: 'sgG6G9XTvvjj7uxwQ', 'target.id': 'BAHx9KeKjuMePce6f' },
{ $set: { 'target.$': newData } }
);
Collection.update({
_id: 'sgG6G9XTvvjj7uxwQ',
'target.id': 'BAHx9KeKjuMePce6f'
}, {
$set: {
"target.$": newData
}
});