yopp
сделать по нему индекс и дальше просто выбирать по этому полю: last_changed_at < 3.days.ago
Назар
завести поле last_changed_at с датой когда цена изменилась
ну вообще нужно хранить как то все цены, менялись они или нет, чтоб вышло что вроде как на али показывают расширения цены. с last_changed норм, но это по сути частный случай. Потому что еще нужно например получить товары, у которых цена за 5 дней выросла не более чем на х.
Назар
но всегда будет запрос на последние х дней. Не будет промежутков более ранних. Поэтому я думал может просто сделать массив с ценами? Можно ли по нему делать такие выборки?
yopp
тогда как и у @bodyajoy, у вас временной ряд для аттрибута цена
yopp
бакеты
☮️ Alex
оу
Roman
давно в моге транзакции появились?
☮️ Alex
Не ну вы посмотрите https://docs.mongodb.com/manual/core/transactions/ ))
Roman
с 4.0 — есть
это решение переехать на постгрес
yopp
это решение переехать на постгрес
на 4.2 переехать на несколько порядков дешевле чем на постгрес :)
yopp
ну и главное: зачем вам транзакции нужны
Roman
в монге есть проблемы с групировкой полей?
yopp
нет
Askhat
Всем привет. Ребят, вопрос по aggregate. Есть два массива A и B Мне нужно массив A сложить с B, но чтобы массив A был выше порядком чем B Надо использовать $concatArrays?
Mike
Всем привет, в коллекции документов есть текстовое поле textfield. Можно ли одной операцией во всех документах где textfield:{$regex: some_text} одновременно в этом поле textfield удалялось some_text? И более сложно, если это текстовое поле является массивом. приведенным к строке, т.е. иногда еще придется удалять и ','???
Вася
Вася
500 конекшенов это что значит поясните плиз
Вася
500 запросов к бд?
Alexander
Как вы относитесь к монго в k8s? Мне затея кажется страной, ведь производительность нормально можно будет настроить только в случае выделенных нод, а если ноды выделенные - зачем k8s?
Daniil
500 запросов к бд?
500 открытых соединений одновременно
PH_cheerokee
мне нравится уровень твоего ориентира в этом множестве вкладок
Вася
500 открытых соединений одновременно
а соединения как закрываются?
Daniil
а соединения как закрываются?
Можно вручную закрыть, но при завершении процесса они сами закроются. Следует также знать, что обычно драйвер БД держит пул соединений (от 2 до бесконечности, в зависимости от требований), т.е. если у вас 4 приложения работают с одним сервером БД, то стоит закладывать не 4 соединения, а несколько десятков/сотен
Ivan
Вечер в хату, вопрос такой, пользуюсь виндой, и не хочу запускать монгу с 2 командных строк, есть решение?
Nick
и запускать через службы
Ivan
Понял, спасибо, пойду гуглить
Nick
по дефолту он ее создает, возможно нужно только настроить автозапуск
Roman
acid?
yopp
acid?
Да, ACID
Alexander
мне нравится уровень твоего ориентира в этом множестве вкладок
Лол. А я работал с людьми, которые подробным гордились )
Alexander
Смотря для каких проектов, тут надо сильно о бэкапах сразу и заботится.
Ну о бекапах всегда надо заботиться. Но смысла я не понимаю. В чём преимущества?
Kirill
Ну о бекапах всегда надо заботиться. Но смысла я не понимаю. В чём преимущества?
Я за преимущества не скажу, у нас был OpenShift, к которому цеплялись СХД, сказали поднимать на проект по 3 пода с репликацией, а PVC были в лунах на СХД. Так и использовали.
Kirill
Нагрузки не было особой, да?
Ну уников где-то 80тыс/день, так что да, весьма слабо загружалась система.
Сергей
разобрался спасибо
Сергей
всем привет. подскажите как решить проблему. перенес БД дампом. выполняю "show dbs", базу показывает и размер показывает. а если выполнить "db.getCollection("db").count()" то показывает что файлов нет. в чем может быть дело?
Сергей
спасибо!
Arthur
Спасите, памагите. Как удалить объект в model? Есть объект USER { "proUser": false, "_id": "5edd40e22221d17a6d5f6", "deviceToken": "586F48", "fireBaseToken": "eY0-Iw:ac1F_N", "cards": [ { "status": true, "_id": "5edd40e301221d17a6d66b", "refId": "5eb183e298d649c3fa15a" }, { "status": true, "_id": "5edd40e301221d17a6d66b23", "refId": "5eb183e298d649c3fa15343a" }, { "status": true, "_id": "5edd40e22301221d17a6d66a", "refId": "5eb183e233f98d649c3fa15b" }] Пытаюсь удалить из cards: 5eb183e298d649c3fa15343a Как это сделать?
Dmitry
Всем, привет! Столкнулся с интересной задачей =) Есть у меня коллекция, которая может содержать вариативное количество полей. Хочу организовать поиск по всем полям так, что если какая-то часть текста встречается в любом из полей, то документ находился. Я сделал текстовый индекс по всем полям для того, чтобы поиск по тексту заработал, но вот так работает db.device.find( { $text: { $search: "ABCDEF"} } ), а вот так уже нет db.device.find( { $text: { $search: "ABCD"} } ), потому что ABCDEF встречается как отдельное слово, а ABCD - это только часть слова. В общем можно ли средствами MongoDB сделать так, чтобы второй вариант поиска заработал? А если нельзя, то как обычно решают такого рода задачи?
yopp
Всем, привет! Столкнулся с интересной задачей =) Есть у меня коллекция, которая может содержать вариативное количество полей. Хочу организовать поиск по всем полям так, что если какая-то часть текста встречается в любом из полей, то документ находился. Я сделал текстовый индекс по всем полям для того, чтобы поиск по тексту заработал, но вот так работает db.device.find( { $text: { $search: "ABCDEF"} } ), а вот так уже нет db.device.find( { $text: { $search: "ABCD"} } ), потому что ABCDEF встречается как отдельное слово, а ABCD - это только часть слова. В общем можно ли средствами MongoDB сделать так, чтобы второй вариант поиска заработал? А если нельзя, то как обычно решают такого рода задачи?
$search не поддерживает совпадение по перфиксу или вхождению. Обычно никак не решают. Поиск в монге совсем базовый, если нужны какие-то специфические фичи, то надежнее использовать подходящий инструмент
Null
4.2.8 (Jun 15) ◦ 4.0.19 (Jun 15) ◦ 4.4.0-rc10 (Jun 18) • Плейграунд для запросов • Документация • Официальные курсы (Бесплатно) Stable: 4.2.8 ◦ Bugfix: 4.0.19 Legacy: 3.6.18 (May 1) ◦ Beta: 4.4.0-rc10 По вопросам платной поддержки и покупки лицензий пишите @dd_bb ☠️: 3.4.23 (Jan ‘20), 3.2.21 (Dec ’18), 3.0.15 (May ’17)
Konstantin
Привет всем! Подскажите как низкоуровнего работает update({...},{...}, {multi: true}) Если я выполню команду по фильтру на миллионы документов, монга придавится и попытается обновить сразу все, или будет по батчевого распределенно по времени обновлять?
yopp
afair это происходит в один поток
Konstantin
она откроет курсор и будет ко всем попавшим в него документам применять указанную вторым аргументом трансформацию, без тротлинга
ну т.е пока она выполняет эту операцию - запись/чтение, которое будет происходить над этой коллекцией будет ждать или в целом это нормально? Или все же лучше на уровне приложения батчить такие большие обновления?
Arthur
https://docs.mongodb.com/manual/reference/operator/update/pull/#remove-all-items-that-equal-a-specified-value
Кстати, почему-то не работает. Использую вот так: User.update( {}, { $pull: { cards: { refId: crdRefId } } }, { multi: true } );
yopp
https://docs.mongodb.com/manual/reference/operator/update/pull/#remove-items-from-an-array-of-documents
Arthur
https://docs.mongodb.com/manual/reference/operator/update/pull/#remove-items-from-an-array-of-documents
Да, я читал про него. Я так понял, что он нужен, когда несколько условий задается.
yopp
он нужен когда вы ищите не полное совпадение
yopp
т.е. { $pull: { cards: { refId: crdRefId } } } == удалить элементы которые равны { refId: crdRefId }
yopp
а вы хотите удалить элементы которые содержат { refId: crdRefId }
yopp
а это $elemMatch
Arthur
он нужен когда вы ищите не полное совпадение
Да, еще я понял, что у меня array внутри array. Поэтому мне нужен elemMatch. >However, if the survey collection contained the following documents, where the results array contains embedded documents that also contain arrays:...Then you can specify multiple conditions on the elements of the answers array with $elemMatch:
Arthur
он нужен когда вы ищите не полное совпадение
Отлично, вся база карточек удалилась)) User.update( {}, { $pull: { cards: { $elemMatch: { refId: crdRefId } } } }, { multi: true }, function (err, doc) { if (err) throw err; console.log(doc) });
Arthur
У всех пользователей((
Arthur
Видимо мне в стартап нужен СТО, все-таки
Roman
@dd_bb Насколько надежны транзакции в монге? Стоит ее использовать монгу если данные важно не терять. Или есть особенность работы с документами без потерь? И по этой причине возникла необходимость переписать на постгрес. Стоит менять базу?
Denis
а где можно почитать как $lookup работает? оно качает 2 коллекции полностью в память? или с диска? оно сильно медленнее sql join?
Артем
Вряд ли бы этой базой кто то пользовался, если бы она теряла данные
Roman
Вряд ли бы этой базой кто то пользовался, если бы она теряла данные
Так с тракзакциями все ок данные не будут терятся?