我将这个ruby驱动程序用于mongo:https://github.com/mongodb/mongo-ruby-driver
我在这样的集合中有很多文档:
{
"_productId" => 10
....
}
{
"_productId" => 10
....
}
{
"_productId" => 12
....
}
使用不同的“_productId”获取所有文档的请求是什么,我的意思是我想采用此示例中的第一个和最后一个集合项。
答案 0 :(得分:0)
@Db ['收集&#39]。不同(' _productId&#39)
http://docs.mongodb.org/manual/reference/method/db.collection.distinct/
http://wiki.summercode.com/mongodb_aggregation_functions_and_ruby_counting_and_grouping
答案 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
在这种情况下,每组的第一个文档将是在排序时排在最前面的文档。