2012-01-24 40 views
0

私はコレクションを次のようしているとしますmongoDBから要素の値を取り出す方法は?

{ _id" : ObjectId("4f1d8132595bb0e4830d15cc"), 
    "Data" : "[ 
      { "id1": "100002997235643", "from": {"name": "Joannah" ,"id": "100002997235643"} , "label" : "test" } , 
      { "id1": "100002997235644", "from": {"name": "Jon" ,"id": "100002997235644"} , "label" : "test1" } 
     ]" , 
    "stat" : "true" 
} 

は、どのように私はID1、名前、ID、ラベルや他の要素を取得することができますか?

DATAの_idフィールド、DATA(完全配列)は取得できますが、内部要素は取得できません。

答えて

0

埋め込み構造を照会することはできません。あなたは常にトップレベルのドキュメントを照会します。配列から個々の要素を照会する場合は、それらの要素の最上位レベルの文書を作成して(つまり、独自のコレクションに配置する)、この文書で_idsの配列を維持する必要があります。

つまり、配列が非常に大きくならない限り、ドキュメント全体を単純に把握し、アプリで適切な要素を見つけ出すことは、常に効率的です。

0

私はあなたがそれを行うことはできないと思います。それはhereと説明されています。

あなたが特定のフィールドにアクセスしたい場合は、MongoDB Documentation以下、 あなたのクエリにフラグパラメータを追加することができますが、これは有用であるため、あなたの文書を再設計する必要があります

フィールド選択

クエリ式に加えて、MongoDBクエリはいくつかの追加の引数を取ることができます。たとえば、特定のフィールドのみが返されるように要求することができます。姓が「Smith」のユーザーの社会保障番号を欲しただけの場合は、シェルから次のクエリを発行できます。

// retrieve ssn field for documents where last_name == 'Smith': 
db.users.find({last_name: 'Smith'}, {'ssn': 1}); 

// retrieve all fields *except* the thumbnail field, for all documents: 
db.users.find({}, {thumbnail:0}); 
関連する問題