gpt4 book ai didi

mongodb - 如何在 mongodb 中使用 Distinct, Sort, limit

转载 作者:可可西里 更新时间:2023-11-01 10:01:27 25 4
gpt4 key购买 nike

我有一个文档结构 {'text': 'here is text', 'count' : 13, 'somefield': value}

集合有几千条记录,text键值可能重复多次,我想找到计数值最高的不同文本,连同整个文档应该返回,我可以以降序排列它们。

distinct 返回列表中的唯一值。

我想使用所有这三个函数并且必须返回文档,我仍在学习并且没有涵盖 mapreduce。

最佳答案

您能否明确说明您想做什么?您想返回具有最高“计数”值的唯一“文本”值的文档吗?

例如,给定集合:

> db.text.find({}, {_id:0})
{ "text" : "here is text", "count" : 13, "somefield" : "value" }
{ "text" : "here is text", "count" : 12, "somefield" : "value" }
{ "text" : "here is text", "count" : 10, "somefield" : "value" }
{ "text" : "other text", "count" : 4, "somefield" : "value" }
{ "text" : "other text", "count" : 3, "somefield" : "value" }
{ "text" : "other text", "count" : 2, "somefield" : "value" }
>
(I have omitted _id values for brevity)

您是否只想返回包含具有最高“计数”值的唯一文本的文档?

{ "text" : "here is text", "count" : 13, "somefield" : "value" }

{ "text" : "other text", "count" : 4, "somefield" : "value" }

一种方法是使用新聚合框架中的 $group 和 $max 函数。 $group 的文档可以在这里找到: http://docs.mongodb.org/manual/aggregation/

> db.text.aggregate({$group : {_id:"$text", "maxCount":{$max:"$count"}}})
{
"result" : [
{
"_id" : "other text",
"maxCount" : 4
},
{
"_id" : "here is text",
"maxCount" : 13
}
],
"ok" : 1
}

如你所见,上面并没有返回原始文件。如果需要原始文档,则可以执行查询以查找与唯一文本和计数值匹配的文档。

作为替代方案,您可以先运行“distinct”命令以返回所有不同值的数组,然后使用排序和限制对每个值运行查询以返回具有最高“count”值的文档. sort() 和 limit() 方法在“高级查询”文档的“游标方法”部分进行了解释: http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-CursorMethods

> var values = db.runCommand({distinct:"text", key:"text"}).values
> values
[ "here is text", "other text" ]
> for(v in values){var c = db.text.find({"text":values[v]}).sort({count:-1}).limit(1); c.forEach(printjson);}
{
"_id" : ObjectId("4f7b50b2df77a5e0fd4ccbf1"),
"text" : "here is text",
"count" : 13,
"somefield" : "value"
}
{
"_id" : ObjectId("4f7b50b2df77a5e0fd4ccbf4"),
"text" : "other text",
"count" : 4,
"somefield" : "value"
}

目前还不清楚这是否正是您想要做的,但我希望它至少能给您一些入门的想法。如果我误解了,请更详细地解释您想要执行的确切操作,希望我或社区的其他成员能够帮助您。谢谢。

关于mongodb - 如何在 mongodb 中使用 Distinct, Sort, limit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9998915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com