Я пытался что-то с событиями и должен был запустить группу по запросу, но я не мог пройти через это, потому что это было в основном на поддокументе.
Вот моя БД в настоящее время:
{
"_id" : ObjectId("5bbb6e1c7f3fc62db401d05a"),
"type" : "ADD_BOOK",
"metadata" : {
"_id" : ObjectId("5bbb6e1c7f3fc62db401d05b"),
"name" : "ad",
"author" : "ad",
"imgUrl" : "https://vignette.wikia.nocookie.net/simpsons/images/6/60/No_Image_Available.png"
},
"timestamp" : 1539010076240.0,
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("5bbb736ad441d505589ccecc"),
"type" : "ADD_BOOK",
"metadata" : {
"_id" : ObjectId("5bbb736ad441d505589ccecb"),
"name" : "ada",
"author" : "ada",
"imgUrl" : "https://vignette.wikia.nocookie.net/simpsons/images/6/60/No_Image_Available.png"
},
"timestamp" : 1539011434826.0,
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("5bbb7373d441d505589ccecd"),
"type" : "DELETE_BOOK",
"metadata" : {
"_id" : "5bbb736ad441d505589ccecb"
},
"timestamp" : 1539011443792.0,
"__v" : NumberInt(0)
}
и я хочу, чтобы вывод был таким:
[
{
"_id": ObjectId("5bbb736ad441d505589ccecb"),
"books": [
{
"type": "ADD_BOOK",
"metadata": {
"_id": ObjectId("5bbb736ad441d505589ccecb"),
"name": "ada",
"author": "ada",
"imgUrl": "https://vignette.wikia.nocookie.net/simpsons/images/6/60/No_Image_Available.png"
}
}
{
"type": "DELETE_BOOK",
"metadata": {
"_id": ObjectId("5bbb736ad441d505589ccecb")
}
}
]
},
{
"_id": ObjectId("5bbb6e1c7f3fc62db401d05b"),
"books": [
{
"type": "ADD_BOOK",
"metadata": {
"_id": ObjectId("5bbb6e1c7f3fc62db401d05b"),
"name": "ad",
"author": "ad",
"imgUrl": "https://vignette.wikia.nocookie.net/simpsons/images/6/60/No_Image_Available.png"
}
}
]
}
]
Моя текущая реализация пытается что-то вроде этого:
db.bookevents.aggregate([
{ $match: { }},
{ $group: { _id: "$metadata._id", books: { $push: "$$ROOT" } } }
])
Это не работает, как ожидалось.Я пытаюсь прочитать документацию, но пока не могу разобраться с этим.
Возможно ли, что решение этой проблемы - что-то другое, а не $group
?Также можем ли мы поставить $sort
на отметку времени для каждого books[]
?
PS Я знаю, что вопрос в основном кодовый, но я не знаю, как его поставить другим способом.