gpt4 book ai didi

php - mongodb php获取字段的唯一值

转载 作者:可可西里 更新时间:2023-11-01 09:19:04 26 4
gpt4 key购买 nike

我正在尝试从我的 mongodb 集合的“类型”字段中获取唯一值列表。以下示例文档:

{
"_id" : ...,
"type" : "report",
"tasks" : ...
}
{
"_id" : ...,
"type" : "research",
"tasks" : ...
}
{
"_id" : ...,
"type" : "memo",
"tasks" : ...
}
{
"_id" : ...,
"type" : "memo",
"tasks" : ...
}
{
"_id" : ...,
"type" : "report",
"tasks" : ...
}
{
"_id" : ...,
"type" : "report",
"tasks" : ...
}

我正在寻找文档类型字段中的唯一类型(按频率排序),因此:

["report", "memo", "research"]

执行此操作的最佳方法是什么?希望我可以通过使用 mongo 查询而不是下载整个集合来做到这一点......

最佳答案

在标准的 SQL DBMS 上,这将通过以下查询完成:

SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;

在 mongodb 上,这将使用 group 函数来完成,尽管它稍微复杂一些:

db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});

在这里,我要求数据库返回键“type”(因此为“true”)的值,对于每个值,给定的 reduce 函数将用于聚合找到的记录。在这里,我只是更新每条记录出现的次数。如果您运行此查询,您将得到如下结果:

[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}

]

您会注意到这不是有序的;甚至 mongodb 文档也说最简单的订购方式是在客户端进行订购。

相关文档是here .

关于php - mongodb php获取字段的唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4297905/

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