arrays - 排序 Mongo 子数组
问题描述
[
{
"t": "Sample Question",
"d": "2018-12-23T21:21:03.430Z",
"aa": [
{
"q": 1,
"n": "5bee73accda38",
"iU": "5bee73accda38/5c1f3d7341977/1.mp4"
},
{
"q": 4,
"n": "5bee73accda38",
"iU": "5bee73accda38/5c1f3d7341977/1.mp4"
}
]
}]
我是 Mongo 的新手,试图在 MongoDB 中对 SubArray(Descending) 进行排序,但仍然无法实现基于子数组中的“q”(降序)索引的排序。
这是我尝试过但没有成功的方法
Question.find({}, function(err, question) {
if (err)
res.send(err);
}).sort({'d':-1,'aa.q':-1 }).skip(page).limit(10);
解决方案
您始终可以使用$aggregate
and inside $unwind
,$sort
然后$group
:
db.collection.aggregate([
{ $unwind: "$aa" },
{ $sort: { "aa.q": -1 }},
{ $group: {
_id: "$_id",
"t": { $first: "$t" },
"d": { $first: "$d" },
"aa": { $push: "$aa" }
}
}
])
看到它在这里工作
推荐阅读
- python - 错误的 IF 语句输出
- javascript - 为什么这个简单的 ping pong socket.io 示例在短时间内失败?(数据有效载荷未定义)
- c++ - C++在父类成员函数中使用子成员变量
- javascript - 从现有应用程序的样式表中排除 Vue 组件
- microsoft-teams - 如果您的邮箱在本地,团队聊天实际上存储在哪里?
- jquery - DataTables 括号-带动态列的负数插件
- r - 如果重复,按名称排序
- .net - .net NEST 中的 Elasticsearch 查询未初始化对象
- python - Python ctype:当c函数向其写入值时,未更新到c函数的char数组
- spring - 在 Spring WebClient 中流上传“POST”