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

时间:2016-10-27 19:34:44

标签: node.js mongodb

我正在尝试检索数据库中与某个哈希值匹配的文档数,但无论集合中有多少文档,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是否这是不正确的行为?

1 个答案:

答案 0 :(得分:2)

这似乎是因为回调函数有两个参数,即错误和计数值,因此它将null的错误值分配给count,所以尝试在回调函数的计数值之前得到错误:

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);
        });

    }
});

您可以查看count example了解详情

相关问题