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 ..

questionAnswers(1)

yourAnswerToTheQuestion