簡體   English   中英

如何使用Node.js中的Mongoose使用嵌套數組中object的object id查詢和更新嵌套數組對象

[英]how to query and update a nested array objects using Mongoose in Node js using the object id of the object in the nested array

我有一百萬個問題,因為我想過一百萬種可能的方法來做到這一點。 所以我知道使用 mongoose 和 mongodb 文檔的 object id 永遠不會相同但是 object id 是否有可能被重用,文檔中的數組將 object Id 分配給嵌套的 82873498 中的對象

我問是因為我正在嘗試使用 mongoose 查詢和更新一個對象數組,現在我注意到嵌套數組中的每個 object 都有它的 object Id,我想我可以通過 id 找到並使用它更新,但后來我想知道是那些對整個數據庫或僅對那個文件是唯一的?

然后我想我可以編寫一個具有兩個參數的查詢,文檔 obj id 和嵌套數組 object 具有 obj id,然后更新名稱或地址。 我嘗試同時使用兩個 id 的原因是因為名稱可以相同地址可以相同,即使城市在本文檔或數據庫中的其他文檔中也可以相同我認為這 2 個 obj id 是唯一的

最后我不確定我是否應該使用 $push 來更新 object 的地址,因為我想知道那里是否已經有一個地址,它會刪除該地址還是以某種方式添加到它? 我不確定所以我嘗試了 $set

這是我的數據

changeAdress: function(req, res) {

db.postData      
.findOneAndUpdate({ _id: req.params.id, people:{$eleMatch:{_id: req.body.person_Id}} },  {$set: {people: req.body.address}},{new:true})
  .then(dbModel => res.json(dbModel))
  .catch(err => res.status(422).json(err));

},

"_id" : ObjectId("5f09f40864d7219d546ff9e2"),

"state" : "New Jersey ",

"dateCreated" : ISODate("2020-07-11T17:16:56.898Z"),
"people" : [ 
    {
        
        "_id" : ObjectId("5fb99d00006799751407f843"),
        "address" : "789 main street ",
        "name" : "Roger wilco",
        "city" : "trenton",
        "dateCreated" : ISODate("2020-11-21T23:04:32.753Z")
    }
],
"__v" : 0

}

我嘗試了這個並且它沒有找到文檔但是它讓我更新並且因為我知道 _id 的數組

.update({ _id:req.params.id, "comments._id":req.body.commentId},  {$set: {"comments.$.comment": req.body.comment}},{new:true})

暫無
暫無

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

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