![](/img/trans.png)
[英]How to filter multiple nested array object by using multi nested objects using aggregate in mongoose node js
[英]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.