当使用一串键作为select器进行筛选时,mongoosejs查询失败

我试图从一个mongodb查询文档,并让系统从匹配查询的文档中只返回几个字段。 我第一次尝试下面列出的第一个查询的语法,它没有回来,即从来没有调用callback。

然后,我用另一种语法进行了一些尝试,并从下面列出的第二个查询中获得了结果。 我想了解为什么第一个查询不起作用 – 我误解了语法?

这是mongoose3.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'); } }); 

您的第一次尝试使用了Model.find语法,但您试图将其与Query#find一起使用,该Query#find不支持fields参数。 因此,Mongoose将你的字段selectstring解释为一个callback,这就是为什么你的实际callback没有被调用。