繁体   English   中英

尽管非空收集,MongoDB`cursor.count`返回0

[英]MongoDB `cursor.count` returning 0 despite non-empty collection

我正在尝试检索数据库中与某个哈希值匹配的文档数,但是无论集合中有多少文档, count()函数似乎都返回0。 这是我的代码:

var cursor = collection.find({hash_val: current_hash_val}, {response: 1,_id: 0});


cursor.count(function(count) {
    if(count == 1) {
        console.log("Found a unique document. Count is %d",count);
        cursor.forEach(function(doc) {
            console.log(doc);
        });
    }
    else if(count > 1){
        console.log("Found multiple documents. Count is %d", count);
        cursor.forEach(function(doc) {
            console.log(doc);
        });

    }
    else{
        console.log("Did not find any documents. Count is %d", count);
        cursor.forEach(function(doc) {
            console.log(doc);
        });

    }
});

集合中有几个与current_hash_val匹配的文档,但是我的代码总是跳转到else语句。 但是, forEach函数向我显示了一些打印到控制台的记录。 有人可以解释我使用的count函数是否错误,或者MongoDB方面的行为是否不正确?

现在看来,这是因为回调函数有两个参数,错误和计数值,所以它的分配错误值可能是nullcount ,所以尝试在回调函数的计数值之前得到的错误:

var cursor = collection.find({hash_val: current_hash_val}, {response: 1,_id: 0});


cursor.count(function(err, count) {
    if(count == 1) {
        console.log("Found a unique document. Count is %d",count);
        cursor.forEach(function(doc) {
            console.log(doc);
        });
    }
    else if(count > 1){
        console.log("Found multiple documents. Count is %d", count);
        cursor.forEach(function(doc) {
            console.log(doc);
        });

    }
    else{
        console.log("Did not find any documents. Count is %d", count);
        cursor.forEach(function(doc) {
            console.log(doc);
        });

    }
});

您可以查看计数示例以获取更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM