首页 文章

嵌套数组中的MongoDB addToSet

提问于
浏览
0

我正在努力在MongoDB中的嵌套数组中插入数据 . 我的架构如下所示:

{
        "_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
}.

我想要做的是在“成绩”数组中为学生插入成绩 .

预期结果是:

{
        "_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(三个条件),结果是正确的)然后添加到grade数组(Integer)的值为6.但是在这个我发现错误,我认为我在“添加”部分犯了一个错误 .

我还需要在Mongoose中做同样的事情 . 任何帮助表示赞赏,提前谢谢!

编辑:我解决了 . 我发布了我的解决方案,希望它对其他人有用:为了推进三重嵌套数组,请执行以下操作:

db.teachers.update({"_id":ObjectId("5c0c59985ae5981c58937e12"),"classes":{ $elemMatch : { _id : ObjectId("5c0c59a35ae5981c58937e13") }},"classes.student": { $elemMatch : { _id : ObjectId("5c0c59aa5ae5981c58937e14")} }},{$addToSet:{"classes.$.student.0.grades":3}})

1 回答

相关问题