簡體   English   中英

如何在貓鼬中更新對象內部數組中的對象?

[英]How to update object inside array inside object in Mongoose?

我是MongoDB的新手,並且有一個組織的MongoDB集合。 並且有一系列的classes (object) 我目前正在將Node.js與Mongoose結合使用,以更新班級內的教師count 當前收藏如下。

//organization
{
"_id" : ObjectId("54db07ab12545794bf7c2d1b"),
"name" : “Stackoverflow”,
"classes" : [ 
    {
        "name" : “Stack 01”,
        "_id" : ObjectId("54db07ab12545794bf7c2d1f"),
        "teachers" : [ 
            {
                "idUser" : "54d1e8fe14a880bea6288eb6",
                "locked" : false,
                "count" : 0,
            }, 
            {
                "idUser" : "54d321cb190c919759b8a8bb",
                "locked" : false,
                "count" : 0,
            }, 
            {
                "idUser" : "54d32147ceaa3a665958b096",
                "locked" : true,
                "count" : 0,
            }
        ]
    }, 
    {
        "name" : “Stack 02“,
        "_id" : ObjectId("54db07ab12545794bf7c2d1c"),
        "teachers" : [ 
            {
                "idUser" : "54d1e8fe14a880bea6288eb6",
                "locked" : false,
                "count" : 0,
            }, 
            {
                "idUser" : "54d32147ceaa3a665958b096",
                "locked" : true,
                "count" : 0,
            }
        ]
    }
]
}

每當我通過貓鼬更新組織時,我都希望增加教師人數。 我這樣寫。

Organization.findOneAndUpdate(
    {_id: "54db07ab12545794bf7c2d1b", 
    "classes._id": "54db07ab12545794bf7c2d1f"},
    {
        $inc: {"classes.$.teacher.$.count": 1}
    },function(err, org){});

請幫助我查詢和增加教師人數。

您可以手動檢索它並在javascript級別進行操作,然后將其保存到模型中。

var query = {_id: "54db07ab12545794bf7c2d1b"}

Organization.findOne(query,function(err, org){

      var classes = org.classes; 
      var index = null;

      for (var i in classes) {
          if (class[i]._id === ObjectID("54db07ab12545794bf7c2d1f")) {
              var index = i;
              break;
          }
      }

      var teachers = org.classes[index].teachers;

      for (i in teachers) {
         if (teachers[i].idUser === '54d1e8fe14a880bea6288eb6' ) {
             teachers[i].count++;
         }    
      }

      org.classes[index].teachers = teachers;
      org.save();

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM