0

这样的操作可能吗?

样本记录:

{ 
 _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。
即使我可以聚合,如何区分或限制它?
欢迎任何建议。

4

2 回答 2

2

首先,将 group_by 和 distinct 一起使用没有任何意义。您正在使用 group_by 或 distinct。

如果您想对分组查询进行某种分页,则必须使用 map 和 reduce 或聚合管道。在您的情况下,聚合看起来像这样。

db.users.aggregate(
  { '$match' => { 'user' => 'ashok' } },
  { '$group' => { '_id' => '$details.url' } },
  { '$skip'  => 0 },
  { '$limit' => 10 }
)

我正在使用此聚合功能在 VersionEye 显示引用。聚合功能允许在数据库级别进行分组和分页,这就是为什么它比其他 ORM 或分页解决方案快得多的原因。

于 2013-12-05T09:16:41.677 回答
0

在以下格式中,您可以给出一个限制:

$this->mongo_db->order_by(array('Student_Name'=>'asc'))->limit(20)->get('mycollection_name'); 
于 2017-10-05T09:38:40.210 回答