現在、次のデータセット(簡略化)があります。
{
'component_id':1,
'_locales':[
{
'url': 'dutch',
'locale': 'nl_NL'
},
{
'url': 'english',
'locale': 'en_US'
}
]
} (etc more rows similar to this but unique urls)
特定の URL とロケールを照会するときは、次のクエリを使用します
db.find({'_locales': { '$elemMatch': { 'locale': 'nl_NL', 'url': 'dutch' } }});
適切な行を取得しますが、「_locales」は必要のない en_US を含む配列全体を返します。この場合、一致した配列行のみを返します。
'_locales':[
{
'url': 'dutch',
'locale': 'nl_NL'
}]
ロケールを反復処理し、行をロケールに一致させる必要があると感じています。これを行うためのより良い解決策はありますか (結果セットを反復処理しないでください)。たとえば、テーブル構造を変更しますか? ロケール専用の2番目のテーブルを作成せずに、このようにしたいと思っていました..