0

チーム スキーマをクエリして、ID の配列を取得しています。teamIds正しい ID を含む配列であることを確認しました。私のORステートメントでは、home_teamとの両方away_teamがチーム スキーマの ObjectID です。私の問題は、home_teamaway_teamがどちらも ObjectID であるという事実と関係があると感じています。

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

このクエリは機能せず、何が間違っているのかわかりません。

4

1 に答える 1

1

この回答は、実験ではなく、主にドキュメントに基づいています。mongooseor関数はクエリを使用し、追加の句を使用して 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);
});
于 2013-04-23T23:21:57.130 に答える