MongoDB оптимизация запроса

Станислав
На сайте с 27.12.2009
Offline
252
1300

Может кто работает с монго и подскажет куда копать.

Проблема заключается в том что есть раздутые документы в коллекции:


{
"_id": "id",
"name": "name",
"group": [ { "name": "1", "url": "1" },
{ "name": "2", "url": "2" },
{ "name": "3", "url": "1" },
{ "name": "4", "url": "4" },
{ "name": "5", "url": "5" }
]
}

Это урезанная копия документа, в некоторых случаях достигают 15мб, основное поле "group"

В основном запросы идет непосредственно по group.url, по точному совпадению.

db.coll.findOne({"group.url": "url"})

При таком подходе, получаю все объекты находящиеся в group.url. И приходится перебирать, отфильтровывать ненужные объекты.

Как можно избавиться от этого и получать данные в gruop только те, которые были запрошены?.

Т.е. при запросе

db.coll.findOne({"group.url": "1"})

Необходимо получить не весь массив объектов, а только те у которых нашлось переданое значение url


{
"_id": "id",
"name": "name",
"group": [ { "name": "1", "url": "1" },
{ "name": "3", "url": "1" }
]
}

Возможно ли это? Есть ли такая возможность в mongoDB?

Мы там, где рады нас видеть.
Оптимизайка
На сайте с 11.03.2012
Offline
396
#1
⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Станислав
На сайте с 27.12.2009
Offline
252
#2

похоже это не совсем то что нужно, буду разбираться!

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий