2016-10-15 3 views
0

コレクション内の1つのアイテムは以下のようになります。Mongoose/MongoDBネストされたドキュメントを単一の配列としてクエリする方法

{ 
"_id" : ObjectId("4f7ee46e08403d063ab0b4f9"), 
"name" : "MongoDB", 
"notes" : [ 
      { 
       "title" : "Hello MongoDB", 
       "content" : "Hello MongoDB" 
      }, 
      { 
       "title" : "ReplicaSet MongoDB", 
       "content" : "ReplicaSet MongoDB" 
      } 
     ] 
} 

すべてのドキュメントのすべてのメモを1つの配列として取得したいと考えていますが、私のクエリはどのようにすべきですか? mongooseおよび/またはmongoDBの例を与える

答えて

1

あなたは欲望の結果を得るために集約を使うことができます。 $unwindステージを使用して、配列値をドキュメントに展開します。次に、$groupステージから$pushまでのすべてのメモを1つの配列に続けます。必要に応じて、$projectステージを使用して、予想されるフィールドを出力します。

db.collection.aggregate([ 
    {"$unwind":"$notes"}, 
    {"$group":{"_id": null, "notes":{"$push":"$notes"}}}, 
    {"$project":{"_id":0, "notes":1}} 
]); 
関連する問題