2016-09-20 63 views
0

我的MongoDB文檔的集合,它是這樣的:多個不同/ GROUPBY在一個MongoDB中請求獲得一個關聯數組

[ 
    { 
     "Continent":"Europe", 
     "Country":"France", 
     "City":"Paris" 
    }, 
    { 
     "Continent":"Europe", 
     "Country":"France", 
     "City":"Marseille" 
    }, 
    { 
     "Continent":"Europe", 
     "Country":"Germany", 
     "City":"Berlin" 
    }, 
    { 
     "Continent":"Asia", 
     "Country":"China", 
     "City":"Beijing" 
    } 
] 

而且我想(在PHP腳本,但蒙山一個蒙戈查詢)以獲得在末端的關聯數組是這樣的:

$cities = array(
      "Europe" => array(
       "France" => array(
        "Paris", 
        "Marseille", 
       ), 
       "Germany" => array(
        "Berlin", 
       ), 
      ), 
      "Asia" => array(
       "China" => array(
        "Beijing", 
       ), 
      ), 
     ); 

我只需要得到一個關聯數組,以便能夠顯示不同大陸的列表;國家和城市,但不是在3個請求,因爲我想讓用戶過濾結果,所以如果在第一次輸入時用戶輸入「歐洲」,我必須在國家輸入中只顯示「法國」和「德國」..

我不問任何人有關正確的查詢,但我想尋找一些幫助來找到正確的Mongodb函數來使用,因爲我對Mongo和NoSQL非常陌生。

也許我可以使用「聚合」運算符和一些「組」,或連鎖倍數「獨特」運算符...我真的不知道從哪裏開始。

回答

0

嘗試另一個方法:

function handleCities($json) 
{ 
    $result = []; 
    foreach(json_decode($json, true) as $city) { 
     $result[$city['Continent']][$city['Country']][] = $city['City']; 
    } 
    return $result; 
} 

$cities = '[ 
    { 
     "Continent":"Europe", 
     "Country":"France", 
     "City":"Paris" 
    }, 
    { 
     "Continent":"Europe", 
     "Country":"France", 
     "City":"Marseille" 
    }, 
    { 
     "Continent":"Europe", 
     "Country":"Germany", 
     "City":"Berlin" 
    }, 
    { 
     "Continent":"Asia", 
     "Country":"China", 
     "City":"Beijing" 
    } 
]'; 
var_dump(handleCities($cities)); 
+0

是的,但是這是PHP,我會需要遍歷大量的數據。我需要從Mongo中獲取我的所有文檔,然後遍歷它們。我認爲蒙戈可以更有效地展示我想要的東西 – iBadGamer

相關問題