【发布时间】:2012-09-24 23:21:03
【问题描述】:
我想查询我的帖子集合中的所有项目以查找最新的 cmets。目前每个帖子都有一个嵌入式的 cmets 集合,像这样
{ "_id" : ObjectId("4f84b8da6c33f31122000001"), "comments" :
[{
"uname" : "bargledoofus",
"msg" : "hello hello hello",
"_id" : ObjectId("4fe926fa811ec70100008888"),
"date" : ISODate("2012-06-26T03:05:30Z")
},
{
"uname" : "bargledoofus",
"msg" : "moar hello",
"_id" : ObjectId("4fe9272b2f1efb0100000078"),
"date" : ISODate("2012-06-26T03:06:19Z")
},
{
"uname" : "bargledoofus",
"msg" : "most hello ever",
"_id" : ObjectId("4fe92cfd7614c8010000002b"),
"date" : ISODate("2012-06-26T03:31:09Z")
},
{
"uname" : "bargledoofus",
"msg" : "i think i've got it",
"_id" : ObjectId("4fe92d04f4a35c010000000e"),
"date" : ISODate("2012-06-26T03:31:16Z")
}
]}
如何查询帖子集合以获取最新的 cmets、比某个日期时间更新的 cmets 或通过评论属性(如 comment.uname)?
我可以使用 map reduce 来完成这个吗?
【问题讨论】:
-
我还没有 2.2 来使用新的 agg 框架。你可以试试这个:db.posts.aggregate( {$project: {$cmets.uname:1, $cmets.msg:1 , $cmets.date:1}, {$unwind:"$cmets"}, {$sort: {$cmets.date:-1} ); )
-
不幸的是 mongohq 还没有运行 2.2..