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}}
]);