【问题标题】:Node - Mongoose update method issue节点 - 猫鼬更新方法问题
【发布时间】:2020-10-22 02:24:05
【问题描述】:

我需要更新并且已经查询过的文档:

内存保存方式工作正常:

project.likers.push(profile.id);
project.set({
  likes: project.likes + 1
})
await project.save();

但我在博客中读到,与使用 mongoose 更新方法相比,这种方式速度较慢。

由于我在这个端点中使用了多个查询,出于同样的原因,我想使用 mongoose 更新方法。

没用

project.update({ "$push": { "likers": profile.id }, "$inc": { "likes": 1 } });

提前致谢!

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    $push :运算符将指定的值附加到数组。

    并且没有命令“更新”。有两个更新命令,它们是:

    1. updateOne
    2. updateMany

    如果你只是想更新现有的字段,你可以像下面这样使用:

    db.collectionname.updateMany({ "likers": profile.id }, { "$inc": { "likes": 1 } })
    

    如果您想了解更多信息,check out.

    【讨论】:

    • 我不想重新查询文档。我已经查询过了,怎么更新呢?
    • 您可以使用上面的查询。
    • 那么上面的查询并没有按照参数传入的第一个对象再次查询数据库?
    • 每个更新语句都按你说的做。首先,它会找到文档,因为它必须知道要更新哪个文档,然后将它们全部更新。
    猜你喜欢
    • 2014-11-19
    • 2020-01-20
    • 2021-10-10
    • 2018-10-14
    • 2021-04-09
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    相关资源
    最近更新 更多