【问题标题】:MongoDB - How can I get the size of a collection using Node.js?MongoDB - 如何使用 Node.js 获取集合的大小?
【发布时间】:2020-04-18 22:41:38
【问题描述】:

我正在使用 node.js 编写服务器端代码,我正在尝试使用无效的计数方法获取 MongoDB 集合大小。

这是我的代码

var mongo = require('mongodb');
var host =  "127.0.0.1";
var port = mongo.Connection.DEFAULT_PORT;

function getStock(name, callback) {

    var db = new mongo.Db("testDB", new mongo.Server(host, port, {}));
    db.open (function(error){
        console.log("We are connected! " + host + ":" +port);

        db.collection("stocks", function(error, collection){
            console.log("We have a collection");
            **var numOfDocs = db.collection('stocks').count()**
            **console.log("The num of  Docs in our collection is: ",numOfDocs)**
            collection.find({"name":name.toString()}, function(error, cursor) {
                cursor.toArray(function(error, stocks) {
                    if (stocks.length==0) {
                        //console.log("No Stocks found!");
                        callback(false);
                    }
                    else {
                        callback(stocks[0]);
                        //console.log("Found a stock -> ",stocks[0]);
                    }
                });
            });


        });
    });
}

【问题讨论】:

    标签: node.js mongodb mongoose npm


    【解决方案1】:

    .count() 是一个异步函数,就像.find() 一样。

    试试下面的代码:

    collection.count({}, function(error, numOfDocs) {
        console.log('I have '+numOfDocs+' documents in my collection');
        // ..
    });
    

    .count() 的第一个参数应该是搜索查询。由于您要计算所有文档,我将传递一个空对象 {} 作为搜索查询。

    【讨论】:

    • size() 方法呢?
    • @user3502786 MongoDB 中没有 size() 方法。您可以使用.stats() 方法,但它也是异步的。
    • @user3502786 问题是,node.js 中所有与 io 相关的方法都是异步的。
    • 它会给我同样的号码吗?
    • 是的。但它会给你很多其他信息。
    【解决方案2】:

    从 mongo 4 开始,count() 已被弃用。你应该改用countDocuments()

    与 4.0 功能兼容的 MongoDB 驱动程序已弃用其 各自的游标和集合 count() API 支持新的 API countDocuments() 和估计的DocumentCount()。对于特定的 API 给定驱动程序的名称,请参阅驱动程序文档。

    db.orders.countDocuments({})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 2015-11-11
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多