как реализовать следующее: * найти значение data3 где id = "ID1" и region = "RegionA" и indicator_id "= 1 * (результат должен быть точно:" A ") коллекция:find query array массивов в mongo
{
"id" : "ID1",
"data1" :
[
{
"region" : "RegionA",
"data2" : [
{
"indicator_id" : 1,
"data3" : "A"
},
{
"indicator_id" : 2,
"data3" : "B"
},
{
"indicator_id" : 3,
"data3" : "C"
},
{
"indicator_id" : 4,
"data3" : "D"
}
]
},
{
"region" : "RegionB",
"data2" : [
{
"indicator_id" : 5,
"data3" : "A"
},
{
"indicator_id" : 6,
"data3" : "B"
},
{
"indicator_id" : 7,
"data3" : "C"
},
{
"indicator_id" : 8,
"data" : "D"
}
]
}
]
}
не использовать $, где, как она неэффективна
следующие работы, но вернуть все „
Elements региональных веб“ (который не является ожидаемым результатом) и использует «[0] .data1 [0] .data2 [0] .data3 'для проекта "A":
db.elements.find({id:"ID1"},{data1 : { $elemMatch: { data2: {$elemMatch: { indicator_id:1}}}}})[0].data1[0].data2[0].data3
не работает для меня. Я думаю, мне нужно использовать $ elemMatch дважды, так как я использую массив в массиве. Я пришел к выводу, что эта модель ошибочна в первую очередь (для Mongo) – Elad
Я не уверен, почему это не сработало для вас, но я взял документ со своего поста и выполнил над запросом, и он отлично работает, и я также попробуйте с одним условием из 3 условий, он также отлично работает. – nish71