2017-08-09 6 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" 
     }, 
    }, 

は、私が今探しています何を、私にclusterDataは、その配列以上の1つの要素を持っているaccountを与えることです。

私は(2)以上の要素を持つアカウントをリストすることにのみ関心があります。

私はこれを試してみた:

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

そのは結果を返していません。私の質問は正しいですか?これを行う別の方法がありますか?

答えて

0

それが機能しない理由は、clusterdataが配列ではなくオブジェクトであるためです。私はあなたのデータを以下のような2つのプロパティを持つクラスタの配列に変更することをお勧めします。

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

入力いただきありがとうございます。しかし、これを配列に変更するオプションはありません。私はオブジェクトとしてデータを与えられます。ありがとう。 – noober

+0

@ noober次に、私はあなたが尋ねていることは考えません。あなたのオプションは、ドキュメントを取得し、キーを数え、配列になるように文書を修正し、キーの数を格納する文書を変更したり、キーを名前で入力します。 – rrrr