2017-02-09 12 views
0

mongodbからの期待が大きすぎるのかどうかはわかりませんが、ここで質問があります。条件に合わせてクエリをカスタマイズするmongodb + node.js

ブール値のパラメータに基づいてクエリをカスタマイズすることはできますか?まず、私はhttps://docs.mongodb.com/manual/reference/operator/aggregation/cond/と見ました。 しかし、条件が別のパラメータまでの例は見つかりませんでした。

ここで例を挙げて説明します。 flagというパラメータがあるとします。私はその値がtruefalseのどちらであるかに基づいて2つの同様のクエリを実行したいと思います。

ドキュメントはlikeです。

{ 
    "name" : "alex", 
    "age" : NumberInt(21) 
} 
{ 
    "name" : "felix", 
    "age" : NumberInt(14) 
} 

条件を見ると、2つの異なるクエリに分割することができます。

if(flag){ 
    db.collection.find({age: "18"}) 
}else{ 
db.collection.find({age: "21"}) 
} 

私はこのようなものを探しています。

db.collection.aggregate([ 
    {$cond: [flag,{$match: {age: "18"}} ,{$match: {age: "21"}}]} 
]) 

しかし、これは驚きではありませんが、エラーをスローします。

$condを使用して2つの異なるクエリを実行できますか?パラメータを$condに渡すことはできますか?

答えて

0

まず、条件に基づいてクエリを生成し、そのクエリを1回実行することができます。

var query = {}; 

if(flag){ 
    query.age = 18; 
}else{ 
query.age = 21; 
} 

db.collection.find(query, function(err, result) { 
    if(err) { 
     // return error 
    } 
    console.log(result); 
    // return result 
}) 
関連する問題