我正在浏览StackOverflow,但大多数问题都与从数组中更新对象的单个元素有关。
就我而言,我的情况有点不同。 我想用一个新的替换数组中的完整对象。
原始集合如下:
db.countries.find().pretty()
{
"_id": "some ID goes here",
"longitude": "some longitude",
"latitude": "some latitude",
"name": "name of some country",
"millionaires": [
{"millionaire_id": "ID of the first millionaire",
"name": "name of the first millionaire",
"money": 12000000,
},
{"millionaire_id": "ID of the second millionaire",
"name": "name of the second millionaire",
"money": 15000000,
},
],
}
然后由于某种原因,我想替换第一个百万富翁的一些数据(金额变化等)。注意:我不知道哪个字段已更改。
我正在尝试做这样的事情:
db.countries.update({"_id": "country ID",
"millionaires.millionaire_id": "ID of the first millionaire"
},
{$set: {
"millionaire_id": "the same millionaire ID",
"value": "should be another value", ...
}
})
但这意外地起作用了:
db.countries.find().pretty();
{
"_id": "some ID goes here",
"longitude": "some longitude",
"latitude": "some latitude",
"name": "name of some country",
"millionaires": [
{"millionaire_id": "ID of the first millionaire",
"name": "name of the first millionaire",
"money": 12000000,
},
{"millionaire_id": "ID of the second millionaire",
"name": "name of the second millionaire",
"money": 15000000,
},
],
{
"millionaire_id": "the same millionaire ID",
"value": "should be another value", ...
}
}
所以,它在我的百万富翁名单中添加了一个新对象。
注意:更新的对象以编程方式进行,这就是为什么尝试这样的事情不是一个好主意:
new_object = {"millionaires. millionaire_id": "ID", "millionaires.name": "name", ...}
我有原始对象,并希望使用此对象更新现有元素。
有什么想法吗?