2013-04-23 57 views
0

我正在查询我的Team模式并获取一个id数组。我已验证teamIds是包含正确ID的数组。在我的OR声明中,home_teamaway_team都是Team Schema的ObjectID。我有一种感觉,我的问题与home_teamaway_team都是ObjectID的事实有关。Mongoosejs OR对象ID语句

Team.find({ 
    'conference.name': confName 
}).select('_id').exec(function(err, results) { 
    var teamIds = _.pluck(results, '_id'); 
    console.log(teamIds); 

    finding = Game.find().or([ 
     {'home_team': { $in: teamIds }}, 
     {'away_team': { $in: teamIds }} 
    ]); 

    finding.exec(function(err, models) { 
     // An error occurred 
     if (err) return res.send(err, 500); 

     // No models found 
     if (!models) return res.send(404); 

     console.log(models); 
    }); 
}); 

此查询不起作用,我不做我做错了什么。

+0

什么是“发现”,更具体地说,是“发现。 – 2013-04-23 22:43:58

+0

@RoelvanUden已更新,以便更有意义。 – imns 2013-04-23 22:53:53

回答

1

这个答案主要基于文档,而不是实验。似乎猫鼬or函数使用该查询并用附加子句将其包装到一个或语句中。在你的情况下,你将会搜索主客场球队中存在的'一切'或者标识符。它应该是在主队或客队,所以建议手动编写:

Game.find({$or: [ 
       {'home_team': {$in: teamIds}}, 
       {'away_team': {$in: teamIds}} 
       ]}, function(err, models) { 
    // An error occurred 
    if (err) return res.send(err, 500); 

    // No models found 
    if (!models) return res.send(404); 

    console.log(models); 
}); 
+0

这样做,谢谢你的帮助。 – imns 2013-04-24 18:11:32