gpt4 book ai didi

Mongodb 用 groupby 之类的东西限制结果数

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

我有一个具有多个层次结构的 MongoDB 集合,例如,我将使用一个包含国家/地区的集合,其中包含城市,每个文档都是针对特定城市的,并且包含国家/地区和城市的人口值(country_pop 和 city_pop in示例)这非常简单,我实际上有 6 个层次结构和大量数据。

[
{
"country": "France",
"city": "Paris",
"country_pop": 63000000,
"city_pop": 2200000,
"year": 2015
},
{
"country": "France",
"city": "Marseille",
"country_pop": 63000000,
"city_pop": 850726,
"year": 2015
},
{
"country": "France",
"city": "Toulouse",
"country_pop": 63000000,
"city_pop": 441802,
"year": 2015
},
{
"country": "France",
"city": "Paris",
"country_pop": 63500000,
"city_pop": 2350000,
"year": 2016
},
{
"country": "France",
"city": "Marseille",
"country_pop": 63500000,
"city_pop": 880726,
"year": 2016
},
{
"country": "France",
"city": "Toulouse",
"country_pop": 63500000,
"city_pop": 445802,
"year": 2016
}
]

我目前正在使用 doctrine mongo odm 将我的文档混合到 Php 对象中,但这不是必需的。我想要实现的是获取我的 php 脚本值以显示类似的内容:

  • 法国:
    • 2015:63000000
    • 2016:63500000

目前,我得到了匹配 {"country": "France"}所有文档,所以在这个例子中我将得到 6 个条目。但实际上,有大量数据,获得 6 个条目有点不好,我只能得到两个,一个是 2015 年,一个是 2016 年(因为 country_pop 的值在所有匹配的条目中都是相同的 {"year": "2016", "country": "France"}

在我的测试期间,我的 php 脚本使用类似 100mo 的东西来生成我多年来的值(value)观的时间表,这是 Not Acceptable 。我同意我的文档结构不是很好,但我无法控制它。

有什么解决方案可以做类似选择 country_pop ... groupBy("country", "year") 以获得所需的最少结果?

我在 doctrine mongodb odm 文档中找到组查询:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html#group-queries但没有真正的解释。

还有“组”方法的 mongo 文档 https://docs.mongodb.com/v3.2/reference/method/db.collection.group/似乎被用来做一些聚合,比如求和或计数,这不是我要找的。

最佳答案

初学者试试这个,如果您需要任何其他数据,请告诉我:

db.collectionName.aggregate([
{
$group: {
"_id": {
"Country": "$country",
"Year": "$year",
"CountryPop": "$country_pop"
}
}
}
])

这将按国家、年份和国家人口对您的结果进行分组,并为您的数据集生成以下结果:

{ "_id" : { "Country" : "France", "Year" : 2016, "CountryPop" : 63500000 } }
{ "_id" : { "Country" : "France", "Year" : 2015, "CountryPop" : 63000000 } }

关于Mongodb 用 groupby 之类的东西限制结果数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531267/

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