【问题标题】:How do I access and update nested Mongoose documents如何访问和更新嵌套的 Mongoose 文档
【发布时间】:2021-01-22 23:23:18
【问题描述】:

我有一个用户的猫鼬文档。每个用户都有数组或单词,例如名词。我希望能够更新单词的字段,例如为频率添加 +1 或更改状态编号。我可以访问整个数组,但不能访问数组中的单个项目。我还希望能够根据它们的字段显示数组中的项目,例如仅显示频率为 3 或更多等的那些...

我尝试了很多不同的东西,但我就是不明白。当我尝试访问和更新文档时,我不断收到 findOneAndUpdate 不是函数或“未定义”的错误消息。

{
    "_id" : ObjectId("5f7d8490c1842471c6bcea42"),
    "username" : "eric@mail.com",
    "nouns" : [ 
        {
            "_id" : ObjectId("5f7d849cc1842471c6bcea43"),
            "word" : "die Sonne",
            "timeStamp" : ISODate("2020-10-07T09:04:28.436Z"),
            "frequency" : 0,
            "status" : 0
        }, 
        {
            "_id" : ObjectId("5f7d84a8c1842471c6bcea45"),
            "word" : "das Wetter",
            "timeStamp" : ISODate("2020-10-07T09:04:40.940Z"),
            "frequency" : 0,
            "status" : 0
        }, 
        {
            "_id" : ObjectId("5f7d84afc1842471c6bcea47"),
            "word" : "der Apfel",
            "timeStamp" : ISODate("2020-10-07T09:04:47.403Z"),
            "frequency" : 0,
            "status" : 0
        }, 
        {
            "_id" : ObjectId("5f7d84b9c1842471c6bcea49"),
            "word" : "das Maedchen",
            "timeStamp" : ISODate("2020-10-07T09:04:57.388Z"),
            "frequency" : 0,
            "status" : 0
        }, 
        {
            "_id" : ObjectId("5f7d84c8c1842471c6bcea4b"),
            "word" : "das Auto",
            "timeStamp" : ISODate("2020-10-07T09:05:12.036Z"),
            "frequency" : 0,
            "status" : 0
        }
    ],
    "verbs" : [],
    "adjectives" : [],
    "others" : [],
    "salt" : "*****",
    "hash" : "*****",
    "__v" : 5
}

【问题讨论】:

    标签: javascript database mongodb mongoose nosql


    【解决方案1】:

    几小时后才发现

    const ObjectId = require('mongodb').objectID
    
    
    db.collections.users.updateOne(
      {},
      {$set: {"nouns.$[element].status": 3}},
      {multi: true,
      arrayFilters: [{"element._id": 
    ObjectId(req.body.inputId)}]}
    );
    

    【讨论】:

      猜你喜欢
      • 2016-10-06
      • 2021-02-21
      • 2021-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 2023-03-10
      • 2018-09-04
      相关资源
      最近更新 更多