我正在使用 MongoDB,更具体地说是 Mongoose。我最近摆脱了更新 mongo 和 mongoose 时出现的一些弃用警告。
我的一些查询可能如下所示:
const count = await Badge.find(query).count().exec()
Run Code Online (Sandbox Code Playgroud)
我已经将其更改为
const count = Badge.find(query).countDocuments().exec()
Run Code Online (Sandbox Code Playgroud)
和中提琴,贬低警告消失了。然而,阅读MongoDB的文档似乎应该这样写:
const count = Badge.countDocuments(query)
Run Code Online (Sandbox Code Playgroud)
以上所有内容都返回完全相同的内容。显然后两个是我想要的,因为count().
后两者有什么区别?我应该更喜欢其中一个吗?
pra*_*ad_ 16
该db.collection.find方法返回一个游标。游标上的cursor.count ()方法计算游标引用的文档数。这与db.collection.count().
从 MongoDB v4.0 开始,这两种方法(cursor.count()和)均已弃用。db.collection.count()从文档中:
\n\n与 4.0 功能兼容的 MongoDB 驱动程序弃用了各自的游标和集合 count() API,转而使用 countDocuments() 和estimatedDocumentCount() 的新 API。有关给定驱动程序的特定 API\n名称,请参阅驱动程序文档。
\n
\n\n避免使用不带查询谓词的 db.collection.count() 方法,\n因为不带查询谓词,该方法将根据集合\xe2\x80\x99s 元数据返回结果,这可能会产生近似计数。
\n
db.collection.countDocuments(query)返回与集合或视图的查询匹配的文档计数。这是您需要用来计算集合中文档数量的方法。
\n\n\n以上所有内容都返回完全相同的内容。
\n
是的,大多数时候。仅返回countDocuments文档的实际计数。其他方法根据集合的元数据返回计数。
如果您想使用db.collection.count,请将其与查询谓词一起使用,这将返回文档的准确计数(但是,请注意,此方法已被弃用)。
db.collection.count()不计算实际的文档数量,它根据 collection\xe2\x80\x99s 元数据返回结果,这可能会产生近似计数。
为了正确区分MonogDB的介绍countDocuments()和estimatedDocumentCount()方法。
| 归档时间: |
|
| 查看次数: |
23176 次 |
| 最近记录: |