我试图在嵌套在数组中的对象中插入一个文档。例如,如果这是我目前的状态
{
"id" : "abcd",
"test" : [
{
"token" : "abcd2",
"value1" : 1
}
]
}
我想在对象内添加新值
"test" : [
{
"token" : "abcd2",
"value1" : 1,
"value2" : 2
]
我正在尝试的方法是用新值替换旧值。
db.update({ '$and' : [{"Id" : 'abcd' },{ "test" : {"$elemMatch" : {'token' : "abcd2"}}}]}, {"$set" : {"test.$" : { "value2" : 2}})
如何防止值被替换。
答案 0 :(得分:0)
设置 "test.$"
会修改测试数组中的整个匹配元素。
要仅修改该子文档的一个字段,请使用 {"test.$.value2": 2}
要将多个字段添加到嵌入文档,请分别列出每个字段及其路径,如
{$set: {
"test.$.value2": 2,
"test.$.value3": 3
}}