如何在MongoDB PHP代码点火器中查询group by和distinct with a limit


how to query group by and distinct with a limit in MongoDB PHP codeigniter?

这样的操作可能吗?

样品记录:

{ 
 _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');