【发布时间】:2017-06-28 08:21:12
【问题描述】:
我的数据如下所示:
{
"name":"dan",
"somestring":"asdf",
"friends":[
{
"name": "carl",
"height":180,
...
},
{
"name": "john",
"height":165,
...
},
{
"name": "jim",
"height":170,
...
}
]
},
...
我想检索朋友按高度降序排序的文档。
我尝试了db.getCollection('users').find({"name" : "dan"}, {"friends" : 1}).sort({"friends.height" : -1}),但好友列表保持不变。
编辑:我弄乱了数据的结构,我将数组固定为看起来像一个数组...
【问题讨论】:
-
这些是子文档对象的“键”。您无法对它们进行排序。如果您希望按“高度”排序,那么它们需要自己在“数组”条目中。
-
祝你好运!无论如何,大多数语言实现“默认”都没有“排序键”。例如,JavaScript 肯定不会。这确实表明您选择的结构不正确。命名键基本上是一种“蚂蚁模式”。至少用 MongoDB 查询肯定不好。
-
我搞砸了结构,正在编辑...
-
@McDermott 另一种解决方案可以是“插入和排序”,基本上里面的数组是在插入步骤中排序的。因此,当您进行 Find() 时,您将获取已排序的结果。如果您对这种方法感兴趣,我会尝试安排答案。
-
@McDermott 我忘了提到“插入和排序”是 MongoDB 本机支持的。如果你有兴趣,请告诉我,我会写回复。
标签: arrays mongodb sorting children