我在数据库中有此文件
%T
我想在文档{
"_id" : "jpC6fH4xNSY8DFsHd",
"result" : [
{
"form": 2,
"term" : 1,
"Mathematics" : {
"exam" : 15,
"project" : 22
},
"Physics" : {
"exam" : 15,
"project" : 22
},
"Chemistry" : {
"exam" : 15,
"project" : 22
}
},
{
"form": 3,
"term" : 1,
"Mathematics" : {
"exam" : 15,
"project" : 22
},
"Physics" : {
"exam" : 15,
"project": 22
},
//I want to add chemistry here!
},
]
}
和result.form: 3
中更新“化学”对象,但是不更新。我注意到它正在更新result.term: 1
和"result.form": 2
"result.term": 1
我正在使用MongoDB Shell版本:Linux Mint 18.1上的3.2.15
答案 0 :(得分:1)
1)您需要使用$elemMatch
来匹配数组中的多个字段,并且
2)要更新对象内部的字段,您必须使用.dot
表示法
db.results.update(
{ "_id": "jpC6fH4xNSY8DFsHd",
"result": { "$elemMatch": { "term": 1, "form": 3 }}
},
{ "$set": {
"result.$.Chemistry.exam": 12,
"result.$.Chemistry.position": 33
}}
)