私は次の構造の文書を持っています:{_id: 'fkwjefioew', genres: [{_id: 'fewkjfewf', 'name': "Shooter"}, {...}, ...]}
mongoの$ inを使って、渡されたパラメータのジャンル名を持つ文書があるかどうかを調べることができる必要があります。たとえば、 "Shooter"のパラメータをクエリに渡した場合、そのドキュメント内のオブジェクトの配列の1つが "Shooter"という名前のすべてのドキュメントが必要になります。これを達成する最も簡単な方法は何でしょうか?ありがとう!Mongo配列内のネストされたフィールドを照会します。
2
A
答えて
1
これには$elemMatch
を使用します。
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
また、MongoDBのドット表記を使用することができ、それはあなたのようなかなり多くの仕事がexceptなります:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
のMongoDBはケースgenres
でこれを解釈する方法を知っている配列であります。 genres
プロパティが配列でない場合は、name
プロパティにも一致するため、ドット表記クエリはわずかにあいまいです。たとえば、このドキュメントは一致します:あなたは、インデックスgenres
配列とインデックス内のname
プロパティが検索に使用されることができ、すべてのケースで
{"genres": { "name": "Shooter" } }
を。
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/glossary/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/query/in/
関連する問題
- 1. ネストされたMongo配列を照会してください
- 2. ネストされたmongoドキュメントの照会
- 3. Mongoで配列内のオブジェクト内のフィールドを照会しますか?
- 4. Mongo:キーが可変な子配列にネストされた値を照会する
- 5. mongo - ネストされたjsonを照会する方法
- 6. SQLでJSONネストされた配列オブジェクトを照会
- 7. BigQueryネストされたフィールドを照会する方法
- 8. mongodb内のドキュメント内の埋め込み配列フィールドを照会
- 9. アームテンプレート内のネストされた配列のオブジェクトを参照する
- 10. MongoDBのネストされた配列から照会されたオブジェクトのみを取得します。
- 11. 配列内のフィールドでドキュメントを照会する
- 12. ElasticSearchのネストされたドキュメントの照会
- 13. mongoDBがネストされたドキュメント内のネストされたドキュメントを照会しています
- 14. スプリングデータelasticsearchで特定のネストされたフィールドのみを照会して戻す
- 15. Solr - ネストされた子ドキュメントの照会
- 16. MongoDBのフィールドの配列を照会しますか?
- 17. ElasticSearch:正確なネストされた配列を照会する方法
- 18. パペット内のオブジェクトの配列を照会
- 19. Bigqueryの複数のネストされたフィールドを照会するには?
- 20. elasticsearchのネストされたフィールドで複数のパラメータを照会する方法
- 21. レルムスウィフト内のネストされた配列のオブジェクトをフィルタリングします
- 22. ネストされたサブオブジェクトのキーまたはフィールドを使用してfirebaseデータを照会しますか? firebase で
- 23. エラスティック・サーチで複数レベルのネストされたフィールドを照会する
- 24. ネストされた配列内のインデックス
- 25. 特定の配列に一致するネストされたドキュメントを照会します
- 26. アナライザーでネストされたフィールドを照会するとエラーが発生する
- 27. Elasticsearchは、ドキュメント内の配列フィールドのために正確に照会に失敗
- 28. Mongo dbネストされた配列にレコードがある場合
- 29. ネストされた配列プロパティのMongo C#強く型付けされたインデックス
- 30. のMongoDB - 照会&Iは私のコレクションの一つで、次のようにネストされた配列を持つネストされた配列
この答えは、この特定のケースのために右である、しかし、あなたは、同時に複数のフィールドを照会しようとする場合は、予期しない動作を得るかもしれないことに注意してください。あなたがそれをしているなら、$ elemMatchがこの答えに記載された理由のために好まれます:https://stackoverflow.com/questions/18335248/dot-notation-vs-elemmatch –
@AlexanderKuzminアレクサンダーを指摘するためのThx、私は答えを増やしましたあなたのフィードバックを反映させます。 –