这样的操作可能吗?
样品记录:
{
_id: ObjectId("51d6be147483c58419000002"),
user: "ashok",
action: "login",
time: 1373027860,
details: {
user_entries: "blah..blah",
url: "web.domain.com"
}
}
假设,我想按访问的url对每个用户进行分组,按url分组,其中user="ashok",限制为10。
我正在为MongoDB Codeigniter使用AlexBilbie库(它没有聚合)。因此使用普通php
即使我可以聚合,如何区分或限制它
欢迎提出任何建议。
首先,将group_by和distinct一起使用没有任何意义。您正在使用group_by或distinct。
如果您想对分组查询进行某种分页,则必须使用map和reduce或聚合管道。在您的情况下,聚合看起来是这样的。
db.users.aggregate(
{ '$match' => { 'user' => 'ashok' } },
{ '$group' => { '_id' => '$details.url' } },
{ '$skip' => 0 },
{ '$limit' => 10 }
)
我正在使用此聚合功能在VersionEye中显示引用。聚合功能允许在数据库级别进行分组和分页,这就是为什么它比其他ORM或分页解决方案快得多。
在以下格式中,您可以给出一个限制:
$this->mongo_db->order_by(array('Student_Name'=>'asc'))->limit(20)->get('mycollection_name');