6

バックエンドにMongodbを使用してnodejs/expressアプリに取り組んでいます。私の API 呼び出しの 1 つで、特定のクエリ文字列パラメーターの存在に応じて、または $gt または $lt を使用して Mongodb にクエリを発行したいと考えています。

tokenIdusing $ltよりも小さいものすべてを要求したい場合もあれば、 tokenIdusing $gt よりも大きいものすべてを要求したい場合もあります。クエリを複製せずにそれを行うにはどうすればよいでしょうか?

クエリの例を次に示します。

collection.find({'film_id': {$in : genre}, '_id': {$lt: tokenId}}).sort({'_id': -1}).limit(25).toArray(function(error, films)

実際に2つの異なるクエリを実行せずにクエリを動的に作成する方法はありますか?

4

2 に答える 2

17

プログラムでクエリ オブジェクトを作成します。

var query = {'film_id': {$in : genre}};
if (param) {
    query._id = {$lt: tokenId};
} else {
    query._id = {$gt: tokenId};
}
collection.find(query).sort({'_id': -1}).limit(25).toArray(function(error, films);

アップデート

Node.js 4+ が計算されたプロパティ名queryをサポートするようになったので、次のようにワンステップで作成できます。

var query = {
    film_id: {$in: genre},
    _id: {[param ? '$lt' : '$gt']: tokenId}
};
于 2012-12-01T17:13:33.277 に答える