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

Один элемент в коллекции выглядит так, как показано ниже.

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

Допустим, я хочу получить все заметки всех документов в виде одного массива, как мне сделать мой запрос? приведи пример с мангустом и / или mongoDB

1 ответ

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

db.collection.aggregate([
    {"$unwind":"$notes"}, 
    {"$group":{"_id": null, "notes":{"$push":"$notes"}}}, 
    {"$project":{"_id":0, "notes":1}}
]);
Другие вопросы по тегам