запрос для получения нескольких объектов в массиве в mongodb
Предположим, у меня есть массив объектов, как показано ниже.
"array" : [
{
"id" : 1
},
{
"id" : 2
},
{
"id" : 2
},
{
"id" : 4
}
]
Если я хочу получить несколько объектов ({id: 2}) из этого массива запрос агрегации выглядит следующим образом.
db.coll.aggregate([{ $match : {"_id" : ObjectId("5492690f72ae469b0e37b61c")}}, { $unwind : "$array"}, { $match : { "array.id" : 2}}, { $group : { _id : "$_id", array : { $push : { id : "$array.id"}}}} ])
Выход вышеупомянутой агрегации
{
"_id" : ObjectId("5492690f72ae469b0e37b61c"),
"array" : [
{
"id" : 2
},
{
"id" : 2
}
]
}
Теперь вопрос в следующем: 1)несколько объектов из массива можно использоватьнаходить() в MongoDB?
2) Что касаетсяспектакль, агрегация является правильным способом сделать? (Потому что нам нужно использоватьчетыре оператора трубопровода)
3) Можем ли мы использовать манипуляции с Java (зацикливание массива и хранить только объекты {id: 2}), чтобы сделать это послеfind ({"_ id": ObjectId ("5492690f72ae469b0e37b61c")}) запрос? Потому что find когда-то получит документ и сохранит его в оперативной памяти. Но если мы используем агрегирование, для получения выходных данных необходимо выполнить четыре операции в оперативной памяти.
Почему я задал вопрос 3): предположим, что если тысячи клиентов обращаются одновременно, то оперативная память будет перегружена. Если это сделано с использованием Java, меньше задач на оперативной памяти.
4)Как долго рабочий набор будет в оперативной памяти??
Правильно ли мое понимание ???
Пожалуйста, поправьте меня, если я ошибаюсь.
Пожалуйста, предложите мне иметь правильное понимание этого ..