嵌套数组中的MongoDB addToSet
我正在努力在MongoDB中的嵌套数组中插入数据。 我的模式如下所示:嵌套数组中的MongoDB addToSet,mongodb,mongoose,Mongodb,Mongoose,我正在努力在MongoDB中的嵌套数组中插入数据。 我的模式如下所示: { "_id" : ObjectId("5c0c55642440311ff0353846"), "name" : "Test", "email" : "test@gmail.com", "username" : "test", "password" : "$2a$10$RftzGtgM.DqIiaSvH4LqOO6RnLgQfLY3nk7UIA
{
"_id" : ObjectId("5c0c55642440311ff0353846"),
"name" : "Test",
"email" : "test@gmail.com",
"username" : "test",
"password" : "$2a$10$RftzGtgM.DqIiaSvH4LqOO6RnLgQfLY3nk7UIAH4OAvvxo0ZMSaHu",
"created" : ISODate("2018-12-08T23:36:04.464Z"),
"classes" : [
{
"_id" : ObjectId("5c0c556e2440311ff0353847"),
"cName" : "1A",
"student" : [
{
"grades" : [ ],
"_id" : ObjectId("5c0c55812440311ff0353848"),
"name" : "StudentName",
"lname" : "StudenteLastName",
"gender" : "M"
}
insert }
],
"__v" : 0
}.
我想做的是在“grades”数组中插入学生的分数
预期结果是:
{
"_id" : ObjectId("5c0c55642440311ff0353846"),
"name" : "Test",
"email" : "test@gmail.com",
"username" : "test",
"password" : "$2a$10$RftzGtgM.DqIiaSvH4LqOO6RnLgQfLY3nk7UIAH4OAvvxo0ZMSaHu",
"created" : ISODate("2018-12-08T23:36:04.464Z"),
"classes" : [
{
"_id" : ObjectId("5c0c556e2440311ff0353847"),
"cName" : "1A",
"student" : [
{
"grades" : [6],
"_id" : ObjectId("5c0c55812440311ff0353848"),
"name" : "StudentName",
"lname" : "StudenteLastName",
"gender" : "M"
}
]
}
],
"__v" : 0
}.
我尝试了一些查询,但没有一个对我有帮助,甚至搜索了很多
db.teachers.update({"_id": ObjectId("5c0c55642440311ff0353846"), "classes._id": ObjectId("5c0c556e2440311ff0353847"), "classes.student._id": ObjectId("5c0c55812440311ff0353848")},{$addToSet: {"classes.$.student.grades":6}})
基本上,我用第一个花括号搜索学生(如果我使用“db.teachers.find”(三个条件)结果是正确的),然后将值6添加到成绩数组(整型)。但在这一点上我得到了错误,我认为我在“添加”部分犯了错误
我也需要在猫鼬身上做同样的事情。
感谢您的帮助,提前谢谢
编辑:我解决了。我发布了我的解决方案,希望它对其他人有用:
要在三重嵌套数组中推入,请执行以下操作:
db.teachers.update({u id:ObjectId(“5C0C559985AE5981C58937E12”),“classes:{$elemMatch:{u id:ObjectId(“5C0C559A35AE5981C58937E13”)},classes.student:{$elemMatch:{u id:ObjectId(“5C0C559AA5AE5981C58937E14”)}},{$addToSet:{“classes.$.student.0.grades”:3})
尝试使用$elemMatch
"classes":{ $elemMatch : { _id : ObjectId("5c0c556e2440311ff0353847") }},
"classes.student": { $elemMatch : { _id : ObjectId("5c0c55812440311ff0353848")} }