У меня есть ассоциативный контейнер (с семантикой карты c ++), сериализованный в массив mongo db.В моей коллекции я получаю массивы, которые содержат мой ключ следующим образом.
db.qrs.find( { "u.i" : 111892 })
Я бы хотел отсортировать по элементу "value" моей "карты".Например:
db.qrs.find( { "u.i" : 731612 }).sort( { "u.c" : -1} )
Однако это просто сортирует массив в документе, а не сортирует по строке в наборе результатов.Пример отсортированной строки:
{ "_id" : ObjectId("4f2f9acea2b3adfce39ae395"), "i" : 11, "r" : 1,
"s" : ")n(kQ!$A=@%RPv-SB0dQXh7ME*%lw=!$@(VshFU1H6#b7r*wb()t3Ps!^xQ1rNr7j", "u" :
[ { "c" : 7, "i" : 29518, "p" : 0 }, { "c" : 1, "i" :
924577, "p" : 3 }, { "c" : 1, "i" : 731612, "p" : 1 } ] }
У меня была некоторая надежда, что оператор позиции может работать, увы, он не выполняет то, что ожидал, мой запрос был сформулирован как:
db.qrs.find( { "u.i" : 111892 }).sort( { "u.$.c" : -1} )
Итак, как выглядит мой желаемый запрос?
Могу ли я каким-то образом транспонировать набор результатов, чтобы поднять пару ключ-значение, соответствующую моему предикату, чтобы стать частью структуры документа верхнего уровня набора результатов?