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

发布于 2024-10-13 09:03:37 字数 299 浏览 3 评论 0原文

我需要一个查询来获取根据 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"
}

我需要一个查询来对分数上的所有记录进行排序并返回不同的键......

I need a Query to get distinct keys with sorted on basis of score in Mongodb 1.6.5

I have records Like

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

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

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

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

I need a query which sorts all records on score and returns me distinct key.....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小草泠泠 2024-10-20 09:03:37

您可以使用聚合框架按您想要区分的元素进行分组(分组使其不同)。因此,如果您希望按分数排序,然后获取不同的键,您可以执行以下操作 - 按分数排序,按键分组并将分数添加为元素数组(已排序):

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

这将产生不同的键以及分数数组,其中是包含在具有重复键的文档中的那些分数。我不确定这正是您正在寻找的东西,我知道这是一个老问题,但我认为这可能会帮助其他人在未来查看它 - 作为执行此操作的另一种方式。

You can use the aggregation framework to group by the element you want to be distinct (group makes it distinct). So if you wish to sort on score then get distinct keys you could do the following - sort by score, group by key and add score as arrays of elements (already sorted):

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

This will result in distinct keys along with an array of scores which are those scores contained in the documents with duplicate keys. I'm not sure this is exactly what you're looking for and I know this is an old question but I thought this might help out someone else looking at it in the future - as an alternative way of doing this.

逆蝶 2024-10-20 09:03:37

mongodb中有distinct命令

你可以像这样使用distinct

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

:在关系数据库中相同:

SELECT DISTINCT key,score,note FROM test; 

并且通过添加以下代码来排序结果

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

总结果将是这样的:

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

There is distinct command in mongodb:

you can use distinct like this:

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

the same in relational database:

SELECT DISTINCT key,score,note FROM test; 

And than sort result by adding following code:

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

Total result will be like this:

 db.test.distinct({"key":true,"score":true,"note":true}).sort({score : 1}); 
猫九 2024-10-20 09:03:37

使用 mongo shell v3.6.23,

您可以使用不同的值对数据进行排序,

db.test.distinct("key").sort();

您无法指定要对结果进行排序的字段,也无法定义顺序。

例如:你不能使用
.sort({key:value}) 这里的

原因是这里的 sort() 这里不是在游标上定义的 mongosh 排序。

distinct 查询返回 javascript 的 Array.prototype,因此您可以使用所有 实例方法

Using mongo shell v3.6.23

you can sort the data along with distinct values by using

db.test.distinct("key").sort();

you cant specify for which field you want to sort the result nor you can define the order.

eg: you cant use
.sort({key:value}) here

the reason is that here sort() here is not the mongosh sort which is defined on cursor.

the distinct query returns javascript's Array.prototype, so you can use all instance methods on it

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文