Mongo DB不会使用$ set更新文档

时间:2018-12-21 04:51:37

标签: mongodb mongodb-query

我在数据库中有此文件

%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

1 个答案:

答案 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
  }}
)