0

次のコレクションがあるとします。

{    _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、name、id、label、またはその他の要素を取得するにはどうすればよいですか?

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

4

2 に答える 2

0

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

とはいえ、配列が非常に大きくならない限り、ほとんどの場合、単純にドキュメント全体を取得してアプリ内の適切な要素を見つける方が効率的です。

于 2012-01-24T10:12:49.083 に答える
0

私はあなたがそれを行うことができるとは思わない. ここで 説明。

特定のフィールドにアクセスしたい場合は、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});
于 2012-01-24T10:16:23.730 に答える