私は以下のサンプルJSONを持っています。リスト上のMongo DBクエリ<Map <String、Map <String、String >>>
{
"subscriber": {
"id": "123",
"custom_field1": "0",
"custom_field2": "0"
},
"subscriptions": [{
"12": {
"subs_id": "111",
"state": "5",
}
}, {
"13": {
"subs_id": "222",
"state": "8",
}, {
"14": {
"subs_id": "111",
"state": "8",
}
}]
}
Iは
db.testTable.find({ "subscriber.id": "123"})のようMongoのDBで照会することができています。
また、上記のクエリを使用しても結果を得ることができます。
今私は「subs_id」=「111」で構成さサブスクリプションアレイ上のデータをフィルタリングします。
Iはdb.testTable.find({ "subscriptions.subs_id": "111"})
以下のように試みました。
これは私に結果を与えていません。どのようにこれを行う方法を私に示唆することができます。
注:私はその一覧で<地図<文字列、地図<文字列、文字列>>>フォーマットと私は、Mapオブジェクトの値の部分に照会していますことを理解しています。しかし、結果を取得する方法を手がかりにすることはできません。
あなたが埋め込まれた文書のリストにそれを変更することにより、サブスクリプションを固定しようとすべきであることを明確にしたいと思います。 '{{"subs_key": "12"、 "subs_id": "111"、 "state": "5"、 } 'あなたはサブスクリプションを' db.testTable.find({ "123"、 "subscriptions.subs_id": "111"}、{"subscriptions。$":1); ' – Veeram
はサガールの意見に同意しています。もしmongoがワイルドカードフィールド名の検索をするならば、別の話がありますが、今はあなたの文書がおそらく調整する必要があります。なぜあなたのドキュメントに数字でラベルを付けるのですか?理由はありますか? –
ありがとう。しかし、私はそれがクライアント側から来ている入力データ形式を変更することはできません。指定されたフォーマットでデータをフィルタリングするだけです。データを調整しないと、どんな提案も簡単に行えます。 – Manindar