2016-07-05 95 views
2

我在MongoDB中如何從mongoDB集合獲取數組?

{ 
    "key":"ru", 
    "regions":[ 
     { 
      "name":"moskovskaya", 
      "cities":[ 
       { 
        "name":"moskva" 
       }, 
       { 
        "name":"tula" 
       } 
      ] 
     }, 
     { 
      "name":"piterskaya", 
      "cities":[ 
       { 
        "name":"piter" 
       }, 
       { 
        "name":"luga" 
       } 
      ] 
     } 
    ] 
} 

我有這樣的架構不同國家的一些文件這樣的模式, 我怎樣才能從這種模式的每個文檔所有城市的陣列?

回答

1

運行以下聚合管道:

db.collection.aggregate([ 
    { "$unwind": "$regions" }, 
    { "$unwind": "$regions.cities" }, 
    { 
     "$group": { 
      "_id": null, 
      "cities": { "$push": "$regions.cities.name" } 
     } 
    } 
]) 

樣本輸出

{ 
    "result" : [ 
     { 
      "_id" : null, 
      "cities" : [ 
       "moskva", 
       "tula", 
       "piter", 
       "luga" 
      ] 
     } 
    ], 
    "ok" : 1 
} 
+1

非常感謝,你是親)) –

+1

'不同的()'會做工精美。 – styvane

+0

@SSDMS太棒了! – chridam

2

這是一個簡單的查詢。 distinct()方法將完美地完成工作。

db.collection.distinct("regions.cities.name") 

主要生產:

[ "luga", "moskva", "piter", "tula" ]