通过排序数据获得不同的值

时间:2011-01-21 13:40:35

标签: sorting mongodb distinct-values

我需要一个查询来获取不同的密钥,并根据Mongodb 1.6.5

中的分数进行排序

我有唱片赞

{key ="SAGAR"
score =16
note ="test1"
}

{key ="VARPE"
score =17
note ="test1"
}

{key ="SAGAR"
score =16
note ="test2"
}

{key ="VARPE"
score =17
note ="test2"
}

我需要一个查询,对得分上的所有记录进行排序并返回给我不同的密钥.....

2 个答案:

答案 0 :(得分:11)

您可以使用聚合框架按要分离的元素进行分组(组使其不同)。因此,如果您希望对分数进行排序,则可以获得以下不同的密钥 - 按分数排序,按键分组并将分数添加为元素数组(已排序):

db.test.aggregate([
    { $sort : { score : -1 } },
    { $group : {_id : "$key", scores : { $push : "$score" } } }
])

这将导致不同的键以及一系列分数,这些分数是包含重复键的文档中包含的分数。我不确定这是你正在寻找什么,我知道这是一个古老的问题,但我认为这可能会帮助其他人在将来看待它 - 作为另一种方式。

答案 1 :(得分:3)

mongodb中有distinct command

你可以像这样使用不同的东西:

db.test.distinct({"key":true,"score":true,"note":true}); 

在关系数据库中相同:

SELECT DISTINCT key,score,note FROM test; 

而不是sort result添加以下代码:

.sort({score : 1}) // 1 = asc, -1 = desc

总结果如下:

 db.test.distinct({"key":true,"score":true,"note":true}).sort({score : 1});