2017-08-09 65 views
1

我有一個mongodb查詢:(給我設置裏的帳戶=「測試」)如何查找多個元素在嵌入式陣列MongoDB中

db.collection_name.find({"account" : "test1"}, {settings : 1}).pretty(); 

在那裏我得到以下輸出:

{ 
    "_id" : ObjectId("49830ede4bz08bc0b495f123"), 
    "settings" : { 
     "clusterData" : { 
      "us-south-1" : "cluster1", 
      "us-east-1" : "cluster2" 
     }, 
    }, 

我在尋找什麼,現在,是給我account其中clusterData有其陣列超過1元。

我只對列出那些擁有(2)個或更多元素的帳戶感興趣。

我已經試過這樣:

db.collection_name.find({'settings.clusterData.1': {$exists: true}}, {account : 1}).pretty(); 

它不返回任何結果。我的查詢是否正確?有沒有另一種方法來做到這一點?

回答

0

它不工作的原因是你的clusterdata是一個對象,而不是一個數組。我建議將數據更改爲具有如下兩個屬性的集羣數組,然後它將工作。

{ 
    "_id" : ObjectId("49830ede4bz08bc0b495f123"), 
    "settings" : { 
     "clusterData" : [ 
      { 
       name : "cluster1", 
       location : "us-south-1" 
      }, 
      { 
       name : "cluster2", 
       location : "us-east-1" 
      } 
     ] 
    } 
} 
+0

感謝您的意見。但是,我沒有選擇將其更改爲數組。我將數據作爲對象。謝謝。 – noober

+0

@noober然後我不認爲你在問什麼是可能的。你的選擇是獲取文檔和計數鍵,修改文檔是一個數組,修改文檔來存儲鍵的數量或查詢是否存在按他們的名字。 – rrrr