我有这个收藏。
[
{
"id": 0,
"name": [
{
"family": "A",
"given": [ "Z" ],
"use": 0
},
],
},
{
"id": 1,
"name": [
{
"family": "Z",
"given": [ "A" ],
"use": 1
},
],
},
]
我自然理解name.family上以下排序的行为。
db.collection.aggregate([
{
$sort: {
"name.family": 1
}
}
])
但是,我并不完全理解mongo在playGround中对整个name数组进行排序时的行为。
在这种情况下,是否首先进行了排序?
如果排序,mongoDB如何以及在哪里引用数组?
- 谢谢-谢谢
1条答案
按热度按时间bvn4nwqk1#
TLDR;在本例中,Mongo
Recursively compares key-value pairs in the order that they appear within the BSON object.
来自文档的所有信息:https://www.mongodb.com/docs/manual/reference/bson-type-comparison-order/
Mongo按以下顺序排序:
所以虽然
name
是一个数组,但数组中的项是一个对象,所以我相信它:Recursively compare key-value pairs in the order that they appear within the BSON object.
(来自上面链接的文档)在您的游戏示例
{$sort:{"name":1}}
中,第一个条目的第一个字段是“family”,因此第一个排序操作是在该文档的该字段上执行的。如果更改第一个对象,使其具有不同的第一个字段:
顺序排序将使用use键以升序给予你一个不同的结果。