У меня есть этот код для получения первого значения из группы:
db.slides.aggregate([
{"$match": {"deckid": {"$in": [ObjectId("5d6f9216a4d6980ecb8347a1")]}}},
{ "$project": { "_id":1, "deckid":1, "slideid" :1, "messagecategories" : {
"$objectToArray": { "$mergeObjects":["$messagecategories", "$corrected.messagecategories"]}
}}},
{ "$unwind": "$messagecategories"},
{ "$sort": { "messagecategories.v": -1}},
{ "$group":{"_id": "$_id", "messagecategories": { "$first": "$messagecategories" }}},
{ "$sortByCount": "$messagecategories.k"}
])
Пример o / p:
{
"_id" : "Efficacy",
"count" : 1
}
"messagecategories": { "$first": "$messagecategories" }
это возвращает первое значение. Как получить первое, а также второе значение?
Прошу прощения за любые ошибки, которые я допустил, я новичок в запросах MongoDB.
РЕДАКТИРОВАТЬ
удалено
РЕДАКТИРОВАТЬ 2
Образец Do c:
{
"_id" : ObjectId("5d75e92fa4d698248a997a51"),
"deckid" : ObjectId("5d75e8eea4d698248a997a3d"),
"page" : 2
"messagecategories" : {
"Guidelines" : "0.001016",
"Trial Design" : "0.162572",
"Safety" : "0.000373",
"Efficacy" : "0.015276",
"Cost" : "0.001291",
"Indication" : "0.000489",
"Summary" : "0.114031",
"Other" : "0.0"
},
"corrected" : {
"messagecategories" : {
"Patient Profile" : 1.0
},
"id" : "5d75e92fa4d698248a997a51",
"type" : "slide"
}
}
В основном я хочу 2 категории сообщений с наибольшим количеством очков.
Желаемая операция для вышеупомянутого: c:
{
"_id" : "Patient Profile",
"count" : 1
}
{
"_id" : "Trial Design",
"count" : 1
}