Oleg
Подозреваю из за того, что level_1 массив
почему тогда работает в компасе не оч понятно
yopp
Да, вы правы, я думал о создании новых документов(коллекций) при поступлении новых данных, но тогда плата за хранение - очень большая, пока делаю вставку обновление документа через mongoimport ...... -mode=merge --upsertFields=_id --parseGrace=skipRow --writeConcern '{w: 0, j: false}' --bypassDocumentValidation, но вставка на коллекцию в 4.5 млрд новых 300 млн, на standalone идет 26 часов. Поступление новых данных 1 раз в 8 дней, потому терпимо(про 26 часов)
Если тепримо, то есть смысл оставить так, да. Может быть вы можете что-то выйграть через $lookup с $merge 1) импортируете выгрузку в новую коллекцию 3) записываете в оригинальуню коллекцию через $merge Выйгрыш будет скорее всего за счёт уменьшения сетевых задержек. Объединение данных в любом случае это 1 чтение и 1 запись, а это дорого и плохо оптимизируется.
Viktar
да и агрегация... подскажите какую задачу вы решаете?
Oleg
да и агрегация... подскажите какую задачу вы решаете?
я же правильно понял, что я могу применить аггрегацию на модели? или она только для запросов поиска
Viktar
я же правильно понял, что я могу применить аггрегацию на модели? или она только для запросов поиска
https://docs.mongodb.com/manual/reference/operator/aggregation/set/ если вы хотите проапдейтить документ, то агрегация вам не поможет
Andrey
Если тепримо, то есть смысл оставить так, да. Может быть вы можете что-то выйграть через $lookup с $merge 1) импортируете выгрузку в новую коллекцию 3) записываете в оригинальуню коллекцию через $merge Выйгрыш будет скорее всего за счёт уменьшения сетевых задержек. Объединение данных в любом случае это 1 чтение и 1 запись, а это дорого и плохо оптимизируется.
Да, спасибо, тестировал так, добавлять новую коллекцию(быстро), а потом уже merge, почему то оказалось - дольше, чем сразу такой как выше "merge". И в итоге сделал "костыль" - так как по значениям в поле типа array искать нет необходимости, я просто "обновляю" запись, через создание нового поля "z_value_int": null. То есть храню значение в названии поля. Минус - при чтение документа приходится читать почти все поля, потому как неизвестно какие поля есть с z_, но так получилась самая быстрая вставка при экономии на хранении. Просто думал, есть "идеальное и самое правильное решение", но чудеса редко бывают.
Viktar
хм, странно, спасибо, думал она по другому работает
посмотрите https://docs.mongodb.com/manual/reference/operator/update/positional-filtered/ если вам надо проапдейтить конкретный элемент в колекции
Olga Tomakhina 💛
Привет! МОжет кто подскажет - триггеры в обычм монго доступны тоже? Просто в документации написано что https://docs.mongodb.com/realm/triggers/database-triggers/ Database Triggers are only available for MongoDB Atlas clusters that are running MongoDB version 3.6 or newer.
Almaz
Добрый день Может кто подсказать, как в данном случае найти записи, у которых name == 'smt'?
Almaz
Нашел в поиске сам, спасибо))
ravia
mongos это отдельный исполняемый файл, пример конфигурации можно взять из плейбука по разворачиванию шарда https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/#start-a-mongos-for-the-sharded-cluster
доку видел, не понимаю как должен правильно выглядть конфиг файл 1) это должен быть mongod.conf в котором указаны параметры шарда 2) это должен быть файл mongos.conf в котором только параметры шарда и все
yopp
доку видел, не понимаю как должен правильно выглядть конфиг файл 1) это должен быть mongod.conf в котором указаны параметры шарда 2) это должен быть файл mongos.conf в котором только параметры шарда и все
путь к конфигурации задаётся через аргумент —config. для mongos требуется отдельный файл конфигурации, так как mongos не поддерживает ряд настроек относящихся к mongod. https://docs.mongodb.com/manual/reference/program/mongos/#std-option-mongos.--config Вероятно, если ставить из пакетов, то они поставляют настройки для установки бинарников как системных сервисов, у которых есть какие-то пути по умолчанию.
yopp
Привет! МОжет кто подскажет - триггеры в обычм монго доступны тоже? Просто в документации написано что https://docs.mongodb.com/realm/triggers/database-triggers/ Database Triggers are only available for MongoDB Atlas clusters that are running MongoDB version 3.6 or newer.
Это документация для Realm, это фреймворк вокруг mongodb. В самой монге нет инстурментов для хранения и исполнения функций как триггеров. Вы можете реализовать аналог триггеров на changeStream https://docs.mongodb.com/manual/changeStreams/
yopp
для дебиана/убунты это mongodb-org-mongos пакет https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/5.0/multiverse/binary-amd64/
Anonymous
Кто-нибудь пробовал ставить mongodb 5 на ubuntu? Почему-то 5 не ставится, а 4.4 ставится. Ставил по инструкции на оф сайте MongoDB
Anonymous
Ставится нормально, но даемон не запускается. Что-то ему мешает. Гугл не помог. Если ставить 4.4, то всё хорошо
Anonymous
Ставил на чистую дескптопную убунту 20.04 и серверную
Anonymous
Ну вроде как 5 версия и 4.4 особо не отличаются, поэтому буду сидеть на 4.4. Кстати вы не знаете, какой срок поддержки версии 4.4?
Anonymous
А если установлена 4.4, обновить её на 5 уже не получится?
Anonymous
Вы из реп ставите?
Из официальных репозиториев MongoDB
Anonymous
Вот по этой статье: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
Андрей
Ну вы заапдейтили аптом 4.4 на 5 и что при запуске вам в лог насыпает?
Андрей
Не должно быть никаких проблем, если версия ОСи поддерживается версией СУБД.
Anonymous
Просто мне интересно, у одного меня такая проблема возникает? Если да, скорее всего что-то я делаю не так. Я уже не помню, что было в логах, но я гляну
Андрей
В любом случае у вас всегда есть возможность поехать просто на бинах без инсталляции.
Anonymous
Как затипизировать возращаемое значение с опцией new?
Anonymous
кто-то сталкивался с этим?
Anonymous
Anonymous
✙ Nikita
@dd_bb ^^^
Ярослав
подскажите пожалуйста можно ли отправить составное содержимое в http запрос. вот у меня POST запрос, мне нужно в body передать и файл (form-data) и json. Можно это как-то сделать?
Anonymous
multipart/formdata
ravia
для дебиана/убунты это mongodb-org-mongos пакет https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/5.0/multiverse/binary-amd64/
подскажите еще может где можно найти инфу по добавлению сервиса для mongos? в офф доке нету, а делая как в гугле пишут) - не работает
ravia
В смысле рега в системе инициализации?
с сервисом я вроде разобрался
ravia
теперь не понимаю другое, при запуске сервиса mongos вижу вот такой лог на сервере конфига. При этом сервис mongos падает в ошибку
ravia
2021-09-28T18:34:55.006+0000 I NETWORK [conn1587] received client metadata from 10.6.14.191:39856 conn1587: { driver: { name: "NetworkInterfaceASIO-RS", version: "3.6.23" }, os: { type: "Linux", name: "Ubuntu", architecture: "x86_64", version: "18.04" } } 2021-09-28T18:35:23.162+0000 I SH_REFR [ConfigServerCatalogCacheLoader-254] Refresh for collection config.system.sessions took 0 ms and found the collection is not sharded 2021-09-28T18:35:23.162+0000 I CONTROL [LogicalSessionCacheRefresh] Failed to create config.system.sessions: Cannot create config.system.sessions until there are shards, will try again at the next refresh interval 2021-09-28T18:35:23.162+0000 I CONTROL [LogicalSessionCacheRefresh] Sessions collection is not set up; waiting until next sessions refresh interval: Cannot create config.system.sessions until there are shards 2021-09-28T18:35:44.986+0000 I NETWORK [conn1584] end connection 10.6.14.193:34540 (8 connections now open) 2021-09-28T18:35:44.986+0000 I NETWORK [conn1586] end connection 10.6.14.193:34550 (7 connections now open)
Maksudkhanov
@dd_bb
ravia
опять запутался, подскажите ранее я в базе admin создал юзера admin и не могу могу подключиться теперь под пользователем admin ни на одну ноду, а в логах вижу [conn15] SCRAM-SHA-1 authentication failed for admin on admin from client 10.6.14.192:43396 ; UserNotFound: Could not find user admin@admin
ravia
Подключаюсь так mongo -u admin -p 123 --authenticationDatabase "admin" --host s6-mongo-nd2
Александр
Добрый день. Подскажите пожалуйста, как сделать из этих двух функций - одну. Применять "match" по наличю переменной "start"? Exist можно применять не к полю объекта в коллекции ?
Александр
мб просто start ? { c матчем } : {}
вопрос... можно ли написать примерно это. В пайпе проверку делать , без where и тд
Oleg
вопрос... можно ли написать примерно это. В пайпе проверку делать , без where и тд
мне кажется, это так не работает { field: { $exists: <boolean> } } вот же его синтаксис
Александр
мне кажется, это так не работает { field: { $exists: <boolean> } } вот же его синтаксис
start моя собственная переменная, ее нет в документе
Oleg
мб просто start ? { c матчем } : {}
ну и я про это, не проще то что я предложил?
Max
Всем привет, помогите с ошибкой пожалуйста.
Max
Anonymous
Александр
Подскажите пожалуйста в чем ошибка ?
Александр
Подскажите пожалуйста в чем ошибка ?
push возвращает массив -> считаю его сумму -> вычитаю такой массив = ошибка
Ilya
Да
сам ошибку поймёшь?
Alex
Доброе утро Подскажите плз, туплю, наверно очень простое, но не могу найти есть $match: {$and: [cond1, cond2]} мне надо туда добавить условие, что в поле (array) есть такой элемент то есть например field: ['fizz', 'buzz'] найти все документы, где у field есть fizz
Nick
push возвращает массив -> считаю его сумму -> вычитаю такой массив = ошибка
пуш ничего не возвращает, это активная операция по добавленияю чегото в массив
Anonymous
как я могу одним запросм найти товар в корзине, и если его там нет то добавить, иначе инкрементировать
Anonymous
Ребята ,а кто нибудь из вас делает инкрементальные бекапы?
Nick
как я могу одним запросм найти товар в корзине, и если его там нет то добавить, иначе инкрементировать
в один можно попробовать через update с агрегацией, но простого способа нет. Если у вас монгус, то корретнее вытащить сущность, ее изменить и сохранить обратно в базу, а не заниматься ручными изменениями
Anonymous
то есть сначала findOne
Anonymous
потом уже ее апдейтить
Anonymous
юзать find нормально будет?
Anonymous
user = User.findOne() user.cart.find(el=>id==user.cart.id); //и тут уже смотреть нашел он или нет
Александр
мне кажется, это так не работает { field: { $exists: <boolean> } } вот же его синтаксис
да не работает. Я пытаюсь не писать два одинаковых метода, которые отличаются только match
Nick
юзать find нормально будет?
можно populate() для заполнения элементов массива и там вроде условие можно сразу передать
Anonymous
попробую щас
Nick
пока не стоит, возможно херню написал
Nick
у вас схема в которой в массиве products уже все что нужно есть и populate не к месту