如何更新猫鼬中的子文档?

时间:2021-01-20 14:58:49

标签: javascript node.js mongoose

我在 mongoose 中使用更新时遇到问题。我有一个看起来像这样的集合:

{
    "client": "XXXXX",
    "counts": [
        {
            "bank": "XXXXX",
            "agency": "XXXXX",
            "count": "XXXXX",
            "value": "XXXXX",
        },

        {
            "bank": "XXXXX",
            "agency": "XXXXX",
            "count": "XXXXX",
            "value": "XXXXX",
        }
    ]
}

我想做的是更新银行和代理机构匹配的客户计数的关键“值”。

我试过了:

model.find({
    "client": "XXXXX",
    "counts": {
      "$elemMatch": {
        "bank": "bank name",
        "count": "count number"
      }
    }
})

但没有任何反应。有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

为了更新你应该使用 updateupdateOnefindOneAndUpdate 函数,但你使用 find(),改变它


const filter = { name: 'Jean-Luc Picard' };
const update = { age: 59 };

// `doc` is the document _before_ `update` was applied
let doc = await Character.findOneAndUpdate(filter, update);

检查 $elemMatch in update 是否需要更新数组