Vyacheslav
Плюс вывод нрафиков по этим данным
Cap
Тогда gridfs тебе не поможет
Cap
Посчитай сразу по ним то что нужно и это сохрани
Vyacheslav
Я так понимаю, нужно смотреть в сторону индексов
Vyacheslav
И еще такой вопрос - в этой коллекции имеется вложенная коллекция, которая дополняется (массив). Остальные поля обновляются. Как лучше и проще вынести эту коллекцию в отдельную
Vyacheslav
В голову приходит вариант в скрипте по курсору пройтись и переместить
Vyacheslav
Вопрос только в том как создать связи между коллекциями
Cap
Почему у тебя такие колекции большие получились
Cap
Что это за данные?
Cap
Большие?
Достаточно большие что бы по ним фильтровать
yopp
Любой поиск с условием — фильтр
yopp
Нужно индексы правильно расставить и всё будет хорошо. Коллекция маленькая, проблема только в том, что working set перестал влазитььв память.
Vyacheslav
ок, понял
yopp
Следующая проблема будет что индексы перестанут в память влазить. Но тут уже надо будет вертикально масштабироваться.
Cap
Я думаю что не эффективная модель данных
Igor
Да, курсором. Не надо массив называть вложенной коллекцией.
а называть документ объектом тоже некорректно?
Vyacheslav
Да, курсором. Не надо массив называть вложенной коллекцией.
кстати, нашел еще вариант перемещения коллекции https://stackoverflow.com/questions/27039083/mongodb-move-documents-from-one-collection-to-another-collection
yopp
а называть документ объектом тоже некорректно?
Это ещё понятно. А вот на вложенной коллекции пришлось несколько раз перечитать чтоб понять что это просто массив
yopp
Можно сделать дамп, восстановить в новую колллекцию и удалить ненужные доки
Евгений
Всем доброго! Подскажите куда копать, есть коллекция мобов, у них есть массив дропа ресурса, где каждый дроп - объект вида { name: "zxc", value: 123 } . как отсортировать мобов по дропу какого-то ресурса?
Igor
По дропу - в смысле? По value?
Евгений
по value именно в объекте с заданным name
Евгений
.sort({"drop.value": -1}) сортирует по максимальному value вообще (
Igor
.find({'drop.name': 'zxc'}) перед этим еще, наверное
Евгений
я первым делом так и попробовал ... но нет
Евгений
фильтрация ок, а сортировка не верная
Igor
https://stackoverflow.com/questions/15136016/how-can-i-sort-by-elemmatch-in-mongodb не подойдет?
Евгений
Кажется то чтоо надо! Приду проверю. Спасибо.!
Евгений
еще и оставляет толкьо найденный элемент массива! супер!
Cap
Загружай мобов на сервер и держи их в памяти, сортируй как угодно, не напрягай этим базу
Igor
Кстати, там же вроде можно при инсертах-апдейтах прокидывать сортировку и вся коллекция пересортируется после изменения данных? Этим тоже пользоваться не стоит? Почему? Просто мне казалось, что БД с сортировкой в том числе должны гораздо эффективнее всяких там питонов и ноджсов справляться Но я в монге не шарю от слова совсем
Евгений
ну тут это редкая операция + кеширование. но надо
Artem
Привет) А про mongoose сюда можно писать?
Roman
Коллеги, может кто подсказать? Есть ли в aggregation framework возможность выполнить что-то вроде $unwind для всех свойств документа? Т.е. есть документ {data: {field1Id: {...}, field2Id: {..}, ..}}, нужно вытащить все вложенные документы из data
yopp
Простого способа нет. Если названия ключей заранее известны то можно использовать серию $push или сходный по эффекту механизм. Если названия не известны, то вероятно задача в таком виде не решается
yopp
https://jira.mongodb.org/browse/SERVER-18794
yopp
Надо посмотреть реально ли попал бекпорт в 3.4.4, тогда такая задача решается
yopp
Если не попал, то ждите 3.6
Roman
Вроде попал, тогда странно, что-то у меня не получилось
Roman
Спасибо за помощь
yopp
А что не получилось?
yopp
Кстати, а есть аналог sqlfiddle но для монги?
Roman
Не получилось с $unwind, хз, в чем причина. В принципе, обошелся map-reduce с записью в другую коллекцию
Cap
тоже попал на эти грабли, в mongo рекомендуется использовать массивы а не наборы свойств. если нужно потом ими оперировать, делать что то большее чем обращение по известному ключу
Sergey
Та же фигня (
Cap
Map - как раз сериализуется в такую структуру с ключами. Нада теперь что то думать, как то в масив конвертировать
Cap
Дописать к gson свой конвертор для map
yopp
Точнее objecttoarray и есть unwind для объектов/документов
Roman
Точнее objecttoarray и есть unwind для объектов/документов
Спасибо за наводку, выглядит как то что нужно, но я уже обошелся map-reduce
yopp
У тебя была одна проблема, теперь у тебя их три ;)
Roman
js, монга и map-reduce?
Anonymous
Гайс, быть может кто-нибудь сталкивался: можно ли запустить Wordpress/Woocomerce на MongoDB ?
Anonymous
А зачем на mongodb?
Много юзеров. Нужен "scale"
Cap
На диск не помещается ? Или скорость чтения низкая ? А сейчас какая база ?
Anonymous
На диск не помещается ? Или скорость чтения низкая ? А сейчас какая база ?
Просто задел на будущее. Ожидается "handreds of thousands" юзеров. И нужно перенести базу сейчас. Но я не вижу решений использования никаких других БД кроме "MySQL и MariaDB". По сути, wordpress приложение обрабатывает платежи (WooCommerce), все остальное будет на AWS API Gateway и DynamoDB
Anonymous
Если денег на AWS хватает, возьмите там rdbms. Или ещё лучше сразу взять премиум/vip план у wp, пусть у них голова болит как это скейлить.
понял. Спасибо. Про aws rds почему-то и не вспоминал. Просто мне говорят: "Ты мигрируй, а мы разберемся". Интересные ребята, может что-то знают)
Nick
тут как раз было https://habrahabr.ru/company/infopulse/blog/330708/
yopp
Это называется предварительная оптимизация. Тут ничего нового нет.
Vyacheslav
Здравствуйте! Можете подсказать, как такое может быть? > db.col1.count({x : {$exists : 1}}) 2280000 > db.col1.count({x : {$exists : 0}}) 0 > db.col1.count() 2270000
yopp
db.coll1.stats() что показывает?
Vyacheslav
https://pastebin.com/KXHCavYJ
yopp
на всякий случай: x это не url_1 случайно?
yopp
в смысле поле которое в url_1 индексе (вероятно просто `url: 1`)
Vyacheslav
не, в данном случае x это массив url_1 - это просто поле, по нему индекс
yopp
коллекция не шарженная?
Vyacheslav
имеется ввиду на несколько машин?
yopp
по stats очевидно что нет
yopp
да
Vyacheslav
нет
yopp
и не реплика?
Vyacheslav
нет