【发布时间】:2021-07-07 01:17:09
【问题描述】:
我有一个 MongoDB 文档集合,格式如下所示:
{
"_id" : ...,
"username" : "foo",
"challengeDetails" : [
{
"ID" : ...,
"pb" : 30081,
},
{
"ID" : ...,
"pb" : 23995,
},
...
]
}
如何为具有匹配 ID 的 challengeDetails 文档的记录编写查找查询并按相应的 PB 对它们进行排序?
我试过(这是使用NodeJS驱动,所以投影语法很奇怪)
const result = await collection
.find(
{ "challengeDetails.ID": challengeObjectID},
{
projection: {"challengeDetails.$": 1},
sort: {"challengeDetails.0.pb": 1}
}
)
这将返回正确的记录(带有challengeDetails 的文档仅用于匹配的 ID),但它们未排序。
我认为这行不通,因为正如docs 所说:
当 find() 方法包含 sort() 时,find() 方法在应用位置 $ 投影运算符之前应用 sort() 对匹配的文档进行排序。
但他们没有解释投影后如何排序。我将如何编写查询来执行此操作? (我感觉可能需要聚合,但对 MongoDB 不够熟悉,无法自己编写)
【问题讨论】:
标签: mongodb mongodb-query