Daniil
Для такой задачи лучше эластик присмотреть
Роман
как сказали выше копать в сторону от монги - в ней нет fuzz поиска на уровне БД, все что будет делаться это костыли
Плохая идея использовать костыли, если это будет использоваться относительно редко?
Nick
да
Роман
Полудомашняя разработка так сказать.
Роман
Плохо, ладно Спасибо
Nick
если редко - значит можно вообще отказаться
Daniil
Вам в @nodejs_ru
Poire
Всем привет, подскажите пожалуйста, что быстрее - обновлять документ в монго или делать его реплейс?
yopp
обновлять
Poire
А почему?
yopp
если в коллекции есть индексы, но обновление не затрагивает индексируемые поля, то индексы не будут обновлятся. в случае с replace они обновляются
yopp
плюс для репликации replace это дорогая операция, так как в оплог попадёт весь документ, а не фактические изменения
Vsevolod
Подскажите, можно ли делать одновременно $push и $set по одному полю?
Vsevolod
Точнее даже не так. Всегда ли можно делать $push и $set по одному полю одновременно в одном запросе. Почему спрашиваю? Вот здесь применяется такая логика: https://github.com/mongodb/mongoid/blob/master/lib/mongoid/atomic/modifiers.rb#L195 Вкратце - если нам нужно добавить в пуш поле, которое уже есть в сет или пул, то нужно направить его на второй запрос.
Denis 災 nobody
как правильнее, сначала добавлять рут юзера, потом собирать репликасет, или сначала репликасет, потом рута?
Denis 災 nobody
@dd_bb
Anatoly
Господа, я написал свое небольшое "ОРМ" поверх монги и хочу его тестить. Есть ли какое-то state-of-art решение для симуляции монго? Или лучше поднять отдельную тестовую базу, где тестить этот ОРМ ?
Anatoly
что такое "state-of-art" ? пример бы какойнибудь
Субьективно для меня - стандартный способ решения типовой проблемы. Наверняка, я не первый с таким вопросом Собственно, это дало мысль посмотреть, как тестят опенсорс ОРМ
yopp
Поднимать mlaunch из mtools
yopp
Но зачем ещё один ORM
Anatoly
Но зачем ещё один ORM
Хороший вопрос. Он достаточно легковесный. Но скорее это адаптация старого "ОРМ", который я написал под Google Datastore. Ну и интересно самому закопаться в детали и тонкости БД
Denis 災 nobody
что-то я запутался... сделал replicaSet, теперь хочу добавить юзера, запускаю mongo —host node1,node2,node3, подключает, но при rs.status() говорит "errmsg" : "command replSetGetStatus requires authentication", и что ему скармливать? Нет ещё юзеров...
Denis 災 nobody
пробовал всякие форматы типа --authenticationDatabase admin --username root --password ""
Denis 災 nobody
без юзера-пароля тоже хочет авторизацию..
Anonymous
Подключайся к праймари через локалхост и создавай юзера с правами на создание других юзеров как минимум. Эксепшн закрывается после создания первого юзера.
Dmitry
Стоит ли шардировать коллекцию сразу, если ожидается, что за год в нее попадет 15кк документов по 2кб (avgObjSize) или тут шардирование вообще не нужно?
Андрей
А не правильнее ли тогда сначала создать рута, потом уже собирать сет?
Я не понимаю проблемы. Делаете простейший конфиг без авторизации. Собираете кластер, накидываете юзеров/ролей, тушите все инстансы, включаете в конфиге всех инстансов авторизацию, поднимаете и вперед.
Denis 災 nobody
Суть - автоматическая
Андрей
Результат не изменится от того, на каком этапе вы включите авторизацию. Даже набор действий не изменится. Вам все равно переваливать инстансы для включения авторизации. Любую удобную последовательность выбирайте.
Denis 災 nobody
Результат не изменится от того, на каком этапе вы включите авторизацию. Даже набор действий не изменится. Вам все равно переваливать инстансы для включения авторизации. Любую удобную последовательность выбирайте.
"набор действий" как раз меняется. Вот у меня 1 хост, я на нём (и это может быть ЛЮБОЙ хост) делаю рута, и с него же собираю кластер. Хотя я так понимаю, если я с этого хоста запускаю сборку сета, скорее всего именно этот хост и будет примари, но - это на 100% и отмечено в доке, или только "обычно"? Не хочется сначала проверять список хостов после создания сета для поиска мастера. Не понимаю момента про "переваливать инстансы для включения авторизации", сколько кластеров собирали - никогда этого не делали. Добавили рута в сете - он автоматом на все хосты применился. Добавили юзера и базу - они автоматом появились везде, переключили мастера - рут работает, юзер работает, базы есть
Denis 災 nobody
для работы просто сразу вытягивается mongod.key и правится конф через sed на тему bindIp, установку рабочей папки и ключа.
Андрей
Добавили юзера в базу и включили авторизацию - это разные вещи!
Denis 災 nobody
cat /var/lib/own/mongo/templates/mongod-addroot.js use admin; config = {user: "root", pwd: "{{password}}", roles:[{role: "root", db: "admin"}]} db.createUser(config) это через sed копируется в tmp, заменяя пароль на взятый из секретов, и применяется как cat /tmp/mongod-addroot.js | mongo
Denis 災 nobody
кстати вопрос, почему оно не работает как mongo mongod-addroot.js - так заявлено в доке, но по факту не работает..
Denis 災 nobody
Добавили юзера в базу и включили авторизацию - это разные вещи!
чего ещё не хватает? можно линком в доку. В 3.4 - никогда ничего не делали, в 3.6 и 4.2 которые только осваиваем может что-то и упускаем.
Евдоким
Добрый день, не получается найти инфу в гугле по двум вопросам, может кто знает? 1. Можно ли в монге ограничить коллекцию по максимальной длине документов в ней (например, чтобы нельзя было добавить больше 20 документов) 2. Можно ли ограничить массив в документе по длине (например, чтобы максимальная длина массива была 10 элементов)
Андрей
чего ещё не хватает? можно линком в доку. В 3.4 - никогда ничего не делали, в 3.6 и 4.2 которые только осваиваем может что-то и упускаем.
Вы подняли новый сервер, подключились к нему, сделали рута в базе admin и дальше администрируете этот сервер, подключаясь к нему рутовым юзером. Изначально в конфиге или при старте инстанса, если вы все опции указываете в строке при старте, нет авторизации, т.е. наличие пользователей в вопросе безопасности доступа к данным не имеет значения без взведенной опции авторизации в конфиге или при старте в строке. Пример security: authorization: enabled
Denis 災 nobody
security.keyFile Type: string The path to a key file that stores the shared secret that MongoDB instances use to authenticate to each other in a sharded cluster or replica set. keyFile implies security.authorization. See Internal/Membership Authentication for more information.
Denis 災 nobody
но на что обратить внимание я понял, спасибо за ликбез.
Андрей
А я провтыкал, когда вы написали про ключ, видимо)
Denis 災 nobody
А я провтыкал, когда вы написали про ключ, видимо)
ну вот изначальный вопрос и был завязан на том, что authorization: enabled и постоянно вылезали хвосты как нужно делать безопасно и правильно )
Denis 災 nobody
но всё-равно, ещё раз перечитал доку, чуть больше про security понял
Vadzim
Подскажите, можно ли как-то сжать данные при передаче по сети в монго? Может ли монго выдавать данные в сжатом виде? Есть данные хранящиеся в файлах и их необходимо после преобразований сохранить в монго, иногда читаю данные порциями, но из-за объемного json создается трафик.
Anonymous
Есть сжатие у монги, для использования его должен поддерживать драйвер клиента, скорее всего для всех драйверов это вопрос свежести.
Vadzim
https://docs.mongodb.com/manual/reference/configuration-options/#net-compression-option
спасибо, промахнулся когда искал
Egor
Всем привет. Хочу обновить монго с 2.4 до хотяб 3.4. Как это можно сделать кроме как постепенный апгрейд? dump->restore может пройти?
Valera
разобрался? Я всё в хоботах забыл ...
кстати нет) просто другими задачами занимался буду благодарен, если поправишь)
Slava
дай функцию полностью
Slava
интеграционный тест писал?
Serg
если в запросе стоит сортировка "sort": { "createEvent.dateWhen": -1 }, а индекс создан :1
Serg
влияет ли это как-то на скорость выборки ?
Nick
нет
Serg
спасибо
Nick
порядок влияет когда индексы из нескольких полей и по каждому делается своя сортировка
Vadzim
подскажите как можно в хосте выставить параметр сжатия данных. Поддержка есть, но пока в инете нагуглить не могу
Vadzim
вроде так можно ?compressors=snappy
askbnd
Всем привет! У монго есть проблема при очень многом инсерте за короткое время?
Anonymous
вроде так можно ?compressors=snappy
Как передаешь параметры dbPath и т.п.? Если через конфиг, по ссылке которую я ранее давал, если передаются все параметры в командной строке, есть ключ который можно найти по табличке вот тут: https://docs.mongodb.com/manual/reference/configuration-file-settings-command-line-options-mapping/
Anonymous
А, это ты уже на стороне приложения сжатие включаешь. Тут я не подскажу.
Vadzim
на стороне монги включал не я, но с монги когда трафик шел, сжатия не увидели
Anonymous
на стороне монги включал не я, но с монги когда трафик шел, сжатия не увидели
https://github.com/mongodb/mongo-java-driver/blob/master/docs/reference/content/driver/tutorials/compression.md
Daniil
Всем привет! У монго есть проблема при очень многом инсерте за короткое время?
При определенных условиях у всех будут проблемы с этой операцией
Daniil
Зависит от дисков, от общего объема данных, от размера документа, от наличия индексов и тд
Daniil
В общем случае это обычная задача БД
GG
привет. mongod не запускается. помогите разобратся, не знаю что с этим делать
Андрей
Там же написана совершенно четко причина по критерию STORAGE