如何根据 MongoDb 中对象内的值对记录进行排序
How to sort records based on the value that is inside an object in MongoDb
考虑以下MongoDB集合
[
{
_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"
}
}
]
提前致谢:)
如果你想获得按未知键的值排序的结果,你可以使用$objectToArray
db.collection.aggregate([
{
$addFields: {
topicArr: {
$objectToArray: "$topic"
}
}
},
{
$sort: {
"topicArr.v": 1
}
},
{
$unset: "topicArr"
}
])
考虑以下MongoDB集合
[
{
_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"
}
}
]
提前致谢:)
如果你想获得按未知键的值排序的结果,你可以使用$objectToArray
db.collection.aggregate([
{
$addFields: {
topicArr: {
$objectToArray: "$topic"
}
}
},
{
$sort: {
"topicArr.v": 1
}
},
{
$unset: "topicArr"
}
])