繁体   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