2017-04-17 14 views
1

これは私の最初の投稿です。本当に助けになりました。MongoDB集約と異なるキー名のグループ

MongoDB aggregate result with two different keys が見つかりましたが、それとの関連性は得られませんでした。または、むしろ私は解決策に従うことができなかったかもしれません。

問題は、ドキュメントに異なるキーがあるコレクションがあることです。そのキーに基づいて、結果のデータはオブジェクトの配列として取得されます。以下 コレクション構造

{ 
"_id" : ObjectId("58ec840e2573065a1e076db3"), 
"uniqueid" : "24050951", 
"productid" : "5149-1550DM-11", 
"record_id" : 1 
} 

{ 
"_id" : ObjectId("58ec840e2573065a1e076db4"), 
"task" : 1, 
"record_id" : 1, 
"judgement" : { 
    "2" : "Functional" 
} 
} 


{ 
"_id" : ObjectId("58ec840e2573065a1e076db5"), 
"qc" : 1, 
"record_id" : 1, 
"judgement" : { 
    "2" : "No Style" 
} 
} 

{ 
"_id" : ObjectId("58ec840e2573065a1e076db6"), 
"task" : 2, 
"record_id" : 1, 
"judgement" : { 
    "2" : "Functional" 
} 
} 

{ 
"_id" : ObjectId("58ec840e2573065a1e076db6"), 
"task" : 2, 
"record_id" : 2, 
"judgement" : { 
    "2" : "Functional" 
} 
} 

である私は期待していた出力は、あなたがjavascriptのコードを書くことができMongoの機能としてこれをフェッチすることは容易である3つの配列

"task"-> Array(3)-> contains three records for record_id 1 and 2 and also one more for task 1 and 2 for record_id 1 
"qc" -> Array(1) 
"other" -> if the task or qc doesnot exist. 

の目的です。しかし、集合体を使うことは、私が懸念している限り、少し複雑です。 すべてのヘルプはあなたが行く

おかげでここ

+0

これは集計ではありません。 –

+0

mongodbサーバーのバージョンは何ですか? – Veeram

+0

@Veeramを使用して3.4 – Neo

答えて

0

を示すように、他の$ pushAll配列にこれらのキーを置くためにあなたは、プレゼンス($exist)をチェック$match$facetを試すことができますフィールドの。

db.collection.aggregate([ 
    { 
    $facet: { 
     "task": [ 
      { $match: { task: { $exists: 1 } } } 
     ], 
     "qc": [ 
      { $match: { qc: { $exists: 1 } } }, 
     ], 
     "other": [ 
      { $match: {task: { $exists: 0 } , qc: { $exists: 0 } } }, 
     ] 
    } 
    } 
]) 
+0

ありがとうございました。それはしました。何が$ファセットであるかを知る必要があります – Neo

0

をいただければ幸いです!

db.data.aggregate([ 
    {$group:{_id:null, task:{$push:"$task"}, qc:{$push:"$qc"}, other:{$pushAll:['$record_id','$judgement']} }} 
]) 

注:タスク以外のすべてのフィールドを取得し、QC

+0

@nurulnabi ... sorry bro It予想どおりに機能しませんでした。応答のおかげで – Neo

+0

あなたは、上記のクエリの出力は何ですか、何をすべきか教えていただけますか?私はどこに問題がないのか分かりません。私は正しいことがありますか? – nurulnabi