【发布时间】:2017-03-02 14:00:36
【问题描述】:
我正在使用 Node.js + mongodb。我的收藏中的文件很少,我想知道我的收藏中是否有任何文件符合我的条件。当然我可以简单地使用
myModel.find({ myField: someValue }) 并检查是否有任何事情发生。但我想使用像 sql 这样的解决方案提供exists 关键字?请帮帮我
编辑:我的错。我忘了说“性能第一”。
【问题讨论】:
我正在使用 Node.js + mongodb。我的收藏中的文件很少,我想知道我的收藏中是否有任何文件符合我的条件。当然我可以简单地使用
myModel.find({ myField: someValue }) 并检查是否有任何事情发生。但我想使用像 sql 这样的解决方案提供exists 关键字?请帮帮我
编辑:我的错。我忘了说“性能第一”。
【问题讨论】:
在mongodb中有一个exist机制,我将在下面演示一个示例。
例如下面的例子,我正在寻找有tomato.consensus 字段并且它是空的记录,所以我可以删除它们或避免它们。如果我正在寻找“tomato.consensus”:Dublin,我会将 Null 更改为 Dublin,以匹配它。
如果没有引发任何问题,我希望这会有所帮助
tomato
----consensus
db.movieDetails.updateMany({$and: [
{"tomato.consensus": {$exists: true} },
{"tomato.consensus": null} ] },
]})
【讨论】:
MongoDB 的$exists 实际上并不能帮助您找出某个文档是否存在于您的集合中。例如,它用于为您提供具有特定字段集的所有文档。
MongoDB 没有原生支持类似存在的 sql。但是,您可以使用myModel.findOne({ myField: someValue }),然后检查它是否为空。
为了提高性能,您可以告诉 MongoDB 仅通过投影加载对象 ID,如下所示:
myModel.findOne({ myField: someValue }, {_id: 1})
【讨论】: