【发布时间】:2019-07-20 11:25:57
【问题描述】:
我在 MongoDB 中有这个对象:
{
_id: ObjectId("1"),
data: {
city: "ccp",
universities: [
{
_id: "2"
name: "universityOne"
students: []
},
{
_id: "3"
name: "universityTwo",
students: []
}
]
}
}
我需要将一个Student 对象推入students 数组内的universityOne 对象内universities 数组内的全局对象内。
我尝试了文档并提出了这个查询。
Mongo shell 返回{ "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0 }。没有任何改变。
以下是格式化/未格式化的查询,您可以查看它们:
db.pautas.updateOne({_id: ObjectId("1")}, {$push: {"data.universities.$[id].students": {name: "aStudentName", age: 22}}}, {arrayFilters: [{"id._id": ObjectId("2")}]})
db.pautas.updateOne({_id: ObjectId("1")}, {$push: {"data.universities.$[id].students": {name: "aStudentName", age: 22}} }, {arrayFilters: [{"id._id": ObjectId("2")}]})
第二个查询是 mongo [<identifier>] 上的大学名称。但也不起作用。
db.pautas.updateOne({_id: ObjectId("1")}, {$push: {"data.universities.$[name].students": {name: "aStudentName", age: 22}}}, {arrayFilters: [{"name.name": "universityOne"}]})
db.pautas.updateOne({_id: ObjectId("1")}, {$push: {"data.universities.$[name].students": {name: "aStudentName", age: 22}} }, {arrayFilters: [{"name.name": "universityOne"}]})
问候。
更新
实物:
{
_id: ObjectId("5c6aef9bfc1a2693588827d9"),
datosAcademicos: {
internados: [
{
_id: ObjectId("5c6bfae98857df9f668ff2eb"),
pautas: []
},
{
_id: ObjectId("5c6c140f8857df9f668ff2ec"),
pautas: []
}
]
}
}
我需要将 Pauta 添加到 pautas 数组。我已将pautas 设置为字符串数组以进行调试,因此只需推送“hello world”或任何字符串。
我用我得到的答案尝试了这个:
db.pautas.updateOne({"_id":ObjectId("5c6aef9bfc1a2693588827d9"), "datosAcademicos.internados._id": ObjectId("5c6bfae98857df9f668ff2eb")}, { $push: {"datosAcademicos.internados.$.pautas": "hi"}})
db.pautas.updateOne({"_id":ObjectId("5c6aef9bfc1a2693588827d9"), "datosAcademicos.internados._id": ObjectId("5c6bfae98857df9f668ff2eb")}, { $push: {"datosAcademicos.internados.$.pautas ": "你好"}})
更新 2:
Mongo 版本:v4.0.2 使用 Robo 3T。
还是不行。
【问题讨论】:
-
是
_id还是id在您文档的根级别?如果您将过滤条件从id更改为_id它可以工作 -
它是_id,我编辑了它。感谢您的回答。但是还是不行。
-
可能是集合名称示例 vs pautas ?
-
耶稣,你是对的。