1

mongodb からドキュメントをクエリしようとしていて、システムがクエリに一致するドキュメントからいくつかのフィールドのみを返すようにしました。最初のクエリに対して以下にリストされている構文を最初に試しましたが、返されませんでした。つまり、コールバックが呼び出されませんでした。

次に、別の構文を試してみたところ、以下に示す 2 番目のクエリから結果を取得できました。最初のクエリが機能しなかった理由を理解したいのですが、構文を誤解しているのでしょうか?

これは mongoose 3.6.8 と mongo 2.4 です

ティア

最初のクエリ

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

2 番目のクエリ

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構文を使用しようとしていました。そのため、Mongoose はフィールド選択文字列をコールバックとして解釈したため、実際のコールバックが呼び出されませんでした。Query#findfields

于 2013-05-01T04:24:33.027 に答える