MongoDBで集計を使用していますが、問題が発生しました。条件に一致するかどうかに基づいてフィールドを投影したいと思います。例えば異なる条件に基づいて異なるフィールドをプロジェクトする
私はフィールドcoupon_type
その値が1に等しくない場合、その値が1に等しい場合、私は確認対象となる、私はその後、私はフィールド["curr_ctr", "total_coupons", "curr_ctr", "coupons"].
私ができるが投影されますそれ以外のフィールド["curr_ctr", "total_coupons"]
を投影しますを持っています2つのクエリを使用して並列に実行しますが、1つのクエリを使用して結果を達成しようとしています。
誰でも私にこの単一のクエリでこれを行うことはできますか教えてください。
UPDATE
マイドキュメント
[{ "_id" : ObjectId("5878e1edf1df5a2b69bcf60e"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 1 } ,
{ "_id" : ObjectId("5878e1eff1df5a2b69bcf60f"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 0 } ,
{ "_id" : ObjectId("5878e1f1f1df5a2b69bcf610"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 1 } ,
{ "_id" : ObjectId("5878e1f3f1df5a2b69bcf611"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 1 } ,
{ "_id" : ObjectId("5878e1f5f1df5a2b69bcf612"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 11 } ,
{ "_id" : ObjectId("5878e1f7f1df5a2b69bcf613"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 110 },
{ "_id" : ObjectId("5878e1f9f1df5a2b69bcf614"), "curr_ctr": 12, "total_coupons":35, "coupons": ["hello", "hello2"], "coupon_type" : 0 } ]
以下のように今、0に等しいすべてのcoupon_typeのために私はフィールド["curr_ctr", "total_coupons", "curr_ctr", "coupons"]
を投影すると、0と等しくないすべてのcoupon_typeのために私はフィールド["curr_ctr", "total_coupons"]
を投写したいです
更新
実際には、インデックス番号nからn + 1に配列coupons
を投影します.nはユーザーの入力です。
はいあなたは** [$指揮]を使用してこれを行うことができます(https://docs.mongodb.com/manual/reference/operator/aggregation/cond/ )** – Yogesh
私は$ condについて知っていますが、どのように$ condを使って異種のフィールドを投影できますか?私にこれを行うためのコードを表示できますか? –
サンプル文書と予想される出力、および試した内容を投稿するより良い方法はありますか? – Yogesh