Mongo过滤结果由不同的字段

时间:2014-11-04 15:26:31

标签: mongodb

我将这个ruby驱动程序用于mongo:https://github.com/mongodb/mongo-ruby-driver

我在这样的集合中有很多文档:

{
  "_productId" => 10
  ....
}
{
  "_productId" => 10
  ....
}
{
  "_productId" => 12
  ....
}

使用不同的“_productId”获取所有文档的请求是什么,我的意思是我想采用此示例中的第一个和最后一个集合项。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在选择未知组的文档的基础上,并假设要选择的每个productid的第一个文档基于其插入顺序,您可以使用聚合$group,{ {1}}运营商在一起。

根据$project对所有记录进行分组,从每个组中选择productId文档。

first

如果每个文档都有一个_id字段,则第一个文档将是首先为该特定组插入的文档。如果您选择基于其他某个字段执行此操作,则需要在对记录进行分组之前执行其他db.collection.aggregate([ {$group:{"_id":"$_productId","distinct_doc":{$first:"$$ROOT"}}}, {$project:{"distinct_doc":1,"_id":0}} ]) 操作。

例如,

$sort

在这种情况下,每组的第一个文档将是在排序时排在最前面的文档。