【问题标题】:MongoDB how to not return document after findOneAndUpdateMongoDB如何在findOneAndUpdate之后不返回文档
【发布时间】:2019-05-16 10:29:17
【问题描述】:

我正在寻找可以帮助节省带宽和数据的许多不同方法。在我的 node-js 后端。我发现根本没有使用更新操作后从MongoDB返回的数据。所以我决定通过调用例如不返回任何带宽来为我的用户节省一些带宽。 res.status(200).json();

但我脑海中闪过一些想法,MongoDB 实际上是在更新操作后将数据/文档传回。因此,即使我选择不向我的用户返回任何数据。仍然会有数据发送回我的 node-js 后端。换句话说,这可能会给我的数据库托管增加一些额外的不必要的成本。

如何让 findOneAndUpdate 或任何更新操作不返回数据。或者你有什么节省成本的技巧和窍门? :)

我的 findOneAndUpdate 代码之一示例

feedbacks.findOneAndUpdate({
    '_id': feedbackId
}, {
    'status': status
}, (err, result) => {
    if (err) {
        console.log(chalk.red(err));
        res.status(500).json(err);
    }
    console.log(chalk.green('UPDATE: (Super Admin) Feedback status'));
    res.status(200).json();
});

【问题讨论】:

  • 然后使用updateOne。它只返回匹配的详细信息。
  • 您可以在语句中添加一个项目,只返回_id 字段(在filterupdate 部分之后),如下所述:docs.mongodb.com/manual/reference/method/…
  • @Anthony Winzlet,感谢您的建议,我刚刚检查了updateOne,这看起来是限制/减少返回数据的好方法。 { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
  • @Florian Schlag,也谢谢你。我阅读了您提供的链接。如果我没有错,请使用您的方法。我可以使用projection 限制每次更新并仅返回{ "_id" : "xxxxx" }。我会做一个字节大小比较 tmr 看看哪个更节省。 (确保)谢谢:)

标签: mongodb mongoose mongodb-query


【解决方案1】:

更新,不太确定限制返回字段是否会节省成本,但我会选择最小的。非常感谢您的精彩回答。我将在此处列出比较结果作为注释供其他人使用。感谢@Anthony Winzlet 和@Florian Schlag 感谢您抽出宝贵时间 :)

1.方法:updateOne

返回字段:

{"n":1,"nModified":1,"opTime":{"ts":"xxxxxxxxxxxxxxxxxxx","t":14},"electionId":"xxxxxxxxxxxxxxxxxxx","ok":1,"operationTime":"xxxxxxxxxxxxxxxxxxx","$clusterTime":{"clusterTime":"xxxxxxxxxxxxxxxxxxx","signature":{"hash":"xxxxxxxxxxxxxxxxxxx","keyId":"xxxxxxxxxxxxxxxxxxx"}}}

字节大小:286

2。方法:在findOneAndUpdate中添加projection,只返回_id

返回字段:

{"_id":"xxxxxxxxxxxxxxxxxxxxxxxx"}

字节大小:34

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 2017-01-27
    • 2019-10-14
    • 1970-01-01
    • 2021-01-29
    • 2021-01-23
    • 2022-08-02
    • 1970-01-01
    相关资源
    最近更新 更多