У меня есть эти документы:документа запроса вложенного multiarray-массив MongoDB elemMatch
//document 1
{
info : [
{
id : 100,
field : {
a : 1,
b : 2
}
},
{
id : 200,
field : {
a : 3,
b : 4
}
},
{
id : 300,
field : {
a : 5,
b : 6
}
}
]
},
//document 2
{
info : [
{
id : 400,
field : {
a : 7,
b : 8
}
},
{
id : 500,
field : {
a : 9,
b : 10
}
}
]
}
Мне нужно найти идентификатор поддокумента со значениями field.a = 7 и field.b = 8, что означает, значение id равно 400.
То, что я пробовал, это $ elemMatch, но я не могу получить результат.
Мои attemps:
attemp 1:
db.mycollection.findOne({info : {$elemMatch : { 'field.$.a':7,'field.$.b':8 } } });
attemp 2:
db.mycollection.findOne({info:{$elemMatch:{$elemMatch:{'field.$.a':7,'field.$.b':8,}}}});
attemp 3:
db.mycollection.findOne({info:{$elemMatch:{$elemMatch:{'field.a.$':7,'field.b.$':8,}}}});
attemp 4:
db.mycollection.findOne({info:{$elemMatch:{'field.$.a':7,'field.$.b':8,}}});
вам придется использовать структуру агрегации, чтобы получить поддокументе в идентификатор – inspired
попробовать 'db.mycollection.findOne ({инфо: {$ elemMatch: {поле: {«а»: 7 , 'b': 8}}}}); ' – hecnabae
это действительно работает, я просто использую проекцию ** db.mycollection.findOne ({info: {$ elemMatch: {поле: {'a': 7 , 'b': 8}}}}, {id: 1, info: {$ elemMatch: {поле: {'a': 7, 'b': 8}}}}); **, thanks @hecnabae –