mongodb-nodejs-driver,DeprecationWarning:collection.count 已弃用
Posted
技术标签:
【中文标题】mongodb-nodejs-driver,DeprecationWarning:collection.count 已弃用【英文标题】:mongodb-nodejs-driver, DeprecationWarning: collection.count is deprecated 【发布时间】:2018-12-11 06:29:43 【问题描述】:我想使用以下方法获取帖子文档的计数:
db.collection('posts').count()
但是,我收到了警告:
DeprecationWarning:collection.count 已弃用,将在未来版本中删除。请改用 collection.countDocuments 或 collection.estimatedDocumentCount
这是我的 mongodb nodejs 驱动版本:
"dependencies":
"mongodb": "^3.1.0"
,
"devDependencies":
"@types/mongodb": "^3.1.0",
"chai": "^4.1.2",
"mocha": "^5.1.1",
"ts-node": "^7.0.0",
"tslint": "^5.10.0",
"typescript": "^2.9.2"
index.d.ts
文件中没有countDocuments
或estimatedDocumentCount
。
我该如何解决这个警告?
【问题讨论】:
这是正确的语法吗?我认为你的查询有问题,括号内的内容是什么,如果你想计算字段上的任何内容,首先你需要找到然后计算 ex:db.collectionName.find(filedName : filedValue).count() 当然是正确的语法。您可以在 mongo shell 中对其进行测试。 【参考方案1】:底层 mongodb 驱动程序已弃用 .count() 方法。您应该改用 .estimatedDocumentCount() 或 .countDocuments()。
【讨论】:
【参考方案2】:如您所见,从MongoDB Node.JS driver v3.1 开始,count()
方法已被弃用,将被替换为:
这些方法已添加到node-mongodb-native 包本身。例如,通过 MongoDB Node.JS 驱动程序,您应该能够做到:
db.collection("posts").countDocuments(
, // filters
, // options
function(error, result)
console.log(result);
);
另见NODE-1501
index.d.ts 文件中没有 countDocuments 或estimatedDocumentCount。
这是因为 mongodb
npm 包的 TypeScript 定义尚未更新以包含这两个新方法。类型列表实际上由社区通过DefinitelyTyped(GitHub:DefinitelyTyped)单独维护
我已提交拉取请求DefinitelyTyped #27008 以添加新方法。一旦获得批准并发布,您应该能够看到键入的定义。
【讨论】:
哪一个与原始 .count 匹配?是 .countDocuments 对吗? @Anthony 这是估计的DocumentCount()以上是关于mongodb-nodejs-driver,DeprecationWarning:collection.count 已弃用的主要内容,如果未能解决你的问题,请参考以下文章
20155306 白皎 0day漏洞——漏洞利用原理之DEP