Mongodb限制結果編號我有一個具有多個層次結構的MongoDB集合,例如我將使用包含城市的國家集合,每個文檔是針對特定城市幷包含該國家的人口值和城市(例子中的country_pop和city_pop)這非常簡單,我實際上有6個層次結構和大量的數據。Mongodb限制結果編號與羣像
[
{
"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年:6300萬
- 2016年63500000
目前,我得到全部文件匹配{"country": "France"}
,所以在這個例子中,我會獲得6個條目。但實際上,在大量數據的情況下,獲得6個參賽作品是不好的,因爲我只能得到2個參賽作品,2015年之一和2016年之一(因爲country_pop的值在所有與{"year": "2016", "country": "France"}
匹配的參賽作品中都是相同的
在我的測試過程中,我的php腳本使用了類似100mo的東西,以便在多年時間內生成我的值的時間線,這是不可接受的,我同意我的文檔結構不是很好,但我無法控制它。
是否有任何解決方案,像做一個 選擇country_pop ... GROUPBY(「國家」,「年」),以只得到最低限度的結果需要?
我在教義mongodb odm文檔中找到組查詢:http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/query-builder-api.html#group-queries但沒有真正的解釋。
此外,「組」方法https://docs.mongodb.com/v3.2/reference/method/db.collection.group/的mongo文檔似乎用於執行某些聚合,如總和或計數,而這不是我正在尋找的。
你也許可以使用不同的查詢來實現這一點? 請看這裏:https://docs.mongodb.com/v3.2/reference/method/db.collection.distinct/ 請問爲什麼你試圖避免聚合?這似乎是完美的方式來獲得你正在尋找的輕鬆。 – dyouberg
我不想通過查看文檔來避免聚集,它用於按國家=「法國」分組,並計算我有多少文檔:{「france」:6},我需要該值我的領域像「country_pop」......但也許我錯了! 編輯:也許我可以使用avg方法,如果它返回我的country_pop的平均值,並且都一樣,那麼可能是我正在尋找的結果 – iBadGamer