mongodb - 如何在 mongodb / mongoose 中对嵌套字段进行排序
问题描述
我试图按日期对评论进行排序,但我做不到正确。
{
"_id": "5defc10b8e753623b4ad0adf",
"title": "bla bla",
"owner:"idToPopulate",
"comments": [
{
"_id": "5dfc2185e62103121cfc0f18",
"reply": "1",
"replyDate": "2019-12-10T16:00:11.228Z"
},
{
"_id": "5dfc218be62103121cfc0f19",
"reply": "2",
"replyDate": "2019-13-10T16:00:11.228Z"
}
]
}
这是我尝试的方式(结果必须是,按上次日期对评论进行排序)
.sort({"comments.replyDate":1})
解决方案
使用$sort您可以对数据进行排序,但在使用之前,您必须拆分数组。试试这个 mongo 查询:
db.collection.aggregate([
{
$unwind: {
path: "$comments"
}
},
{
$sort: {
"comments.replyDate": -1
}
},
{
$group: {
_id: "$_id",
comments: {
$push: {
_id: "$comments._id",
item: "$comments.reply",
date: "$comments.replyDate"
}
}
}
}
])
推荐阅读
- android - Android Firebase Crashlytics 显示内部测试轨道没有崩溃
- c# - Visual Studio:是否有设置一次删除一个选项卡的空白?
- java - 不是“不安全操作”错误:不兼容的类型 Object 无法转换为 Entry
- chef-infra - 如何解决同步食谱错误:?
- android - 如何跟踪 flowable 中的发射次数?
- javascript - 如何在顶级的javascript中等待异步函数?
- android - 每种语言的Android不同字体
- c++ - 通过 C++ 中的迭代器改变集合中的集合
- javascript - 与声明常规类相比,声明功能类有什么好处
- python - 尝试从 selenium 使用 webdriver 时出现问题