mongodb如何对内嵌的文档进行排序?

2013-11-28 07:36:17 +08:00
 hiwljun
想对评论的查询结果按更新时间倒序显示。
{
comment:
[
{
"author":"mongodb",
"content":"排序",
"datetime":2013-11-28
},
{
"author":"mongodb",
"content":"排序",
"datetime":2013-11-29
},
{
"author":"mongodb",
"content":"排序",
"datetime":2013-11-30
}
]
}
8311 次点击
所在节点    MongoDB
10 条回复
lichao
2013-11-28 07:51:50 +08:00
lichao
2013-11-28 08:29:14 +08:00
@lichao 哦,内嵌的数组不是这样排
hiwljun
2013-11-28 09:08:13 +08:00
@lichao 嗯,估计只要在结果里用python去排了。
1to3
2013-11-28 11:16:34 +08:00
db.collection.find(criteria).sort({comment.datetime:-1})
猜的。
hiwljun
2013-11-28 13:58:44 +08:00
@1to3 find_one的时候就不可用了。
1to3
2013-11-28 14:02:18 +08:00
db.collection.find(criteria).sort({comment.datetime:-1}).limit(1) 这个?
1to3
2013-11-28 17:31:07 +08:00
@hiwljun find 或者findOne应该是不改变文档数据的,你说到的情况,已经对文档内部数据结构修改了,先update排好序再find,或者把comment放到另一个collection,或者就如你说的先查到数据再在应用层面去排序。
不好意思一开始没看明白你的意思。
hiwljun
2013-11-28 19:14:27 +08:00
@1to3 嗯,find_one返回的是一个字典,所以不能使用sort(),update的时候好像不能排序。现在的解决方法还是使用应用层面去排序了。
mahone3297
2013-11-28 20:40:39 +08:00
@hiwljun 如果数据量很大,需要全拿出来在应用层去排序?那不是疯了?
当然,我也不懂mongodb。但是我猜应该是有排序吧?
1to3
2013-12-04 11:21:32 +08:00
db.blog.aggregate({$unwind: "$comments"}, {$sort: {comments.datetime: -1}})

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/90921

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX