【问题标题】:mongodb-nodejs-driver, DeprecationWarning: collection.count is deprecatedmongodb-nodejs-driver,DeprecationWarning:collection.count 已弃用
【发布时间】: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 文件中没有countDocumentsestimatedDocumentCount

我该如何解决这个警告?

【问题讨论】:

  • 这是正确的语法吗?我认为你的查询有问题,括号内的内容是什么,如果你想计算字段上的任何内容,首先你需要找到然后计算 ex:db.collectionName.find({filedName : filedValue}).count()
  • 当然是正确的语法。您可以在 mongo shell 中对其进行测试。

标签: mongodb node-mongodb-native


【解决方案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()
    猜你喜欢
    • 2020-01-07
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-12
    相关资源
    最近更新 更多