1

我试图从 mongodb 查询文档,并让系统从与查询匹配的文档中只返回几个字段。我首先为第一个查询尝试了下面列出的语法,但它未能返回,即从未调用过回调。

然后,我用替代语法进行了更多试验,并能够从下面列出的第二个查询中获得结果。我想了解为什么第一个查询不起作用 - 我是否误解了语法?

这是猫鼬 3.6.8 和 mongo 2.4

TIA

第一次查询

query.find({
    category:{
        $in: categoryArray
        }
        ,expiration:{$gte: new Date()}
        ,place:queryVal.destination
        }
        ,'_id expiration url' 
        ,function (err, docs) {
            if (err) {
                console.log(err);
            } else {
                console.log('queryJoin returned ' + docs.length + 'entries');
            }
        }
);

第二次查询

query.find({
        category:{$in: categoryArray}
        ,expiration:{$gte: new Date()}
        ,place:queryVal.destination
        })
        .select({_id:1, expiration:1, url:1})
        .exec(function(err, docs) {
            console.log('queryJoin returns');
            if (err) {
                console.log(err);
            } else {
                console.log('queryJoin returned ' + docs.length + 'entries');
            }
        });
4

1 回答 1

1

您的第一次尝试使用Model.find了语法,但您尝试使用Query#find不支持fields参数的语法。因此,Mongoose 将您的字段选择字符串解释为回调,这就是您的实际回调没有被调用的原因。

于 2013-05-01T04:24:33.027 回答