consulta para recuperar vários objetos em uma matriz no mongodb
Suponha que eu tenha uma matriz de objetos como abaixo.
"array" : [
{
"id" : 1
},
{
"id" : 2
},
{
"id" : 2
},
{
"id" : 4
}
]
Se eu quiser recuperar vários objetos ({id: 2}) dessa matriz, a consulta de agregação é assim.
db.coll.aggregate([{ $match : {"_id" : ObjectId("5492690f72ae469b0e37b61c")}}, { $unwind : "$array"}, { $match : { "array.id" : 2}}, { $group : { _id : "$_id", array : { $push : { id : "$array.id"}}}} ])
A saída da agregação acima é
{
"_id" : ObjectId("5492690f72ae469b0e37b61c"),
"array" : [
{
"id" : 2
},
{
"id" : 2
}
]
}
Agora a pergunta é: 1) Está recuperando devários objetos de uma matriz possível usandoencontrar() no MongoDB?
2) Com relação adesempenho, a agregação é a maneira correta de fazer? (Porque precisamos usarquatro operadores de gasodutos)?
3) Podemos usar a manipulação Java (fazendo um loop na matriz e mantendo apenas os objetos {id: 2}) para fazer isso depoisfind ({"_ id": ObjectId ("5492690f72ae469b0e37b61c")}) inquerir? Porque o find irá recuperar o documento e mantê-lo na RAM. Porém, se usarmos a agregação, quatro operações precisarão ser executadas na RAM para obter a saída.
Por que fiz a 3) pergunta é: Suponha que, se milhares de clientes acessando ao mesmo tempo, a memória RAM fique sobrecarregada. Se isso for feito usando Java, menos tarefa na RAM.
4)Por quanto tempo o workingSet estará na RAM??
Meu entendimento está correto ???
Por favor corrija-me se eu estiver errado.
Por favor, sugira que eu tenha uma visão correta disso ..