1
我正在尝试使用多键索引来查找另一个键的最新记录。我似乎无法完成它。使用多键索引mongo max/min - 查找给定密钥的最新记录
在伪SQL我要说
create table my_table (user_id int, post_time timestamp, content text);
create index my_index (user_id,post_time) on my_table;
我可以再然后点击索引查找最新post_time为每个用户
select user_id,max(post_time) from my_table group by user_id
所有漂亮的,甚至快了许多百万的记录,数据将来自索引,我们根本不打中。
随着蒙戈
db.my_table.ensureIndex({ user_id:1,post_time:1})
和查询
db.my_table.aggregate({ $group:{ '_id':'$user_id', 'max':{ $max:'$post_time'} })
但这并不击中指数 - 它似乎做了(慢)表扫描。
{
"stages" : [
{
"$cursor" : {
"query" : {
},
"fields" : {
"post_time" : 1,
"user_id" : 1,
"_id" : 0
},
"plan" : {
"cursor" : "BasicCursor",
"isMultiKey" : false,
"scanAndOrder" : false,
"allPlans" : [
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"scanAndOrder" : false
}
]
}
}
},
{
"$group" : {
"_id" : "$user_id",
"max" : {
"$max" : "$post_time"
}
}
}
],
"ok" : 1
}
我需要在这里做什么来使这个查询执行?有没有更好的方法/数据结构我应该用mongo?
谢谢你的信息。任何建议如何使这种查询执行使用mongo? – 2015-02-12 07:15:28