我是Node和MongoDB的新手。
我正在尝试使用数组查询模型。
数组看起来像这样
var grArr = [ '5aabc39a3d88101e4b52c861', '5ac3a1fe83d45353bc6a995c' ]
查询为
Group.find().where({ _id: { $in: grArr }}).exec(function(err,gdoc){
if(err)
{
callback({err:err,message:"Error looking up company"});
}
else
{
console.log(gdoc.companies); //Gives undefined
callback(null,gdoc.companies);
}
});
查询返回undefined
。
我们非常感谢您的帮助。
答案 0 :(得分:2)
有两种方法可以用猫鼬执行查询,在我看来,您正在混合使用这两种方法。
你会得到类似的东西
Group.find({ _id: { $in: grArr }}, function(err,gdoc){
if(err) {
callback({err: err, message:"Error looking up company"});
}
else {
console.log(gdoc); //Should print all the matching documents since gdoc is an array
callback(null, gdoc.map(doc => doc.companies); //returns every companies of every document
}
});
这一次您可以调用不带任何参数的Find并像这样链接where语句
Group.find({}).where('_id').in(grArr).exec(callback)
答案 1 :(得分:0)
find()
将数组传递给了回调函数。请参阅文档https://mongoosejs.com/docs/api.html#model_Model.find
gdoc
是数组。像这样编辑代码:
...
callback(null, gdoc[0].companies);
...
答案 2 :(得分:0)
尝试一下
Group.find({ _id: { $in:arr }).lean().exec().then((result) => {
}, (err) => {
});