я в настоящее время имеют следующие набор данных (упрощенно):Монго Возвращаемый результат только соответствует строке массива
{
'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'
}]
У меня такое чувство, что я должен проходить через локали и сопоставлять строки с локали. Это не кажется правильным, есть ли лучшее решение для этого (не повторение набора результатов)? Например, изменив структуру таблицы? Я надеялся сделать это таким образом, не делая второй стол только для локалей.
Хорошо, вот что я думал. На данный момент я буду перебирать результат, поскольку в нем есть максимум 4 или 5 результатов, так что это будет проблемой производительности. Спасибо. –