2016-10-15 4 views
0

один элемент в коллекции выглядит, как показано ниже.Mongoose/MongoDB как запросить вложенные документы как один массив

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

Позволяет сказать, что я хочу получить все заметки всех документов в виде единого массива, как я должен выполнить свой запрос? дать mongoose и or mongoDB пример

ответ

1

Вы можете использовать агрегацию, чтобы получить результат желаний. Используйте этап $unwind, чтобы сгладить значения массива в документах. Затем выполните этап $group до $push всех заметок в один массив. При желании используйте этап $project для вывода ожидаемых полей.

db.collection.aggregate([ 
    {"$unwind":"$notes"}, 
    {"$group":{"_id": null, "notes":{"$push":"$notes"}}}, 
    {"$project":{"_id":0, "notes":1}} 
]); 
Смежные вопросы