如何根据MongoDb中对象内部的值对记录进行排序



考虑以下MongoDB Collection

[
{
_id: 123123,
name: "abc"
topic: {
asda: "Z"
}
},
{
_id: 123123,
name: "abc"
topic: {
dasd: "P"
}
},{
_id: 123123,
name: "abc"
topic: {
qwer: "A"
}
}
]

执行查询后,需要根据主题对象内的值对记录进行排序(不区分大小写)。

注意:对于每个记录,主题对象中的键将始终是一个不同且唯一的字符串

所以结果记录应该如下

[
{
_id: 123123,
name: "abc"
topic: {
qwer: "A"
}
},
{
_id: 123123,
name: "abc"
topic: {
dasd: "P"
}
},{
_id: 123123,
name: "abc"
topic: {
qwer: "Z"
}
}
]

Thanks in Advance:)

如果您想按照未知键的值对结果进行排序,您可以使用$objectToArray

db.collection.aggregate([
{
$addFields: {
topicArr: {
$objectToArray: "$topic"
}
}
},
{
$sort: {
"topicArr.v": 1
}
},
{
$unset: "topicArr"
}
])

在这个操场的例子中可以看到

最新更新