Konstantin
"registerUserf": []
Noname
Ребят, а можно как-то в $lookup, указать параметры обьектов которые надо выдавать , чтобы потом не делать $match?
Konstantin
Q! У меня вопрос начинающего, установив index на любое значение unique как потом итерацию проводить по нему? Допустим у меня есть кастомный индекс user_id: Mongo.Type.ObjectID() /// createIndex({ user_id: 1 }) через который я хочу проводить итерацию по ИД положения, что-то вроде db.collection.find({ user_id: 2 }) и он вернет документ Nº2 с коллекции по указанному индексу , это возможно? Или мне надо добавлять поле с autoIncrement если хочу ассоциировать юзеров с каким-то нормальным ID через который по параметрам в ссылке их можно будет найти без лишних запар? Заранее спасибо за ответ
Nick
Дальше то что вы написали говорит о незнании зачем нужны индексы, они лишь ускоряют поиск и никак не влиют на возможность/невозможность выполнения запросов
Konstantin
Не незнание а непонимание, я и думал что лишь помогают в поиске, но смотря на некоторые примеры немного вошёл в заблуждение
Konstantin
в монге нет автоинкрементов, есть только требование к полю _id, тчобы оно было уникально. По дефолту заполняется сгенерированным ObjectID, уникальным в пределах коллекции.
Допустим по мотивам REST API я спрашиваю GET users/2, чтобы найти этого пользователя под id = 2 по смыслу я должен иметь field в документе с этим ид, и это поле я должен сделать autoincrement через промежуточную query как тут к примеру? https://stackoverflow.com/questions/28357965/mongoose-auto-increment Или с какой стороны мне подойти к этому вопросу, не спрашивать по users/2 а по users/{ObjectId} ?
Nick
Допустим по мотивам REST API я спрашиваю GET users/2, чтобы найти этого пользователя под id = 2 по смыслу я должен иметь field в документе с этим ид, и это поле я должен сделать autoincrement через промежуточную query как тут к примеру? https://stackoverflow.com/questions/28357965/mongoose-auto-increment Или с какой стороны мне подойти к этому вопросу, не спрашивать по users/2 а по users/{ObjectId} ?
автоинкремент нужен только в крайне редких случаях, когда вам не подходит стандартный монговский ObjectId, гуид сгенеренный в приложухе и у вас нет реального id для хранения. В вашем случаем достаточно не придумывать никакие _id , а оставит заполнение для монги. Этоже поле _id использовать для создания ссылок и его же для запросов в базу
Nick
дополнительно это добавляет элемент безопасности, т.к. невозможно подобрать значение _id а ваши автоинкременты этому подвержены
Konstantin
в базе - пересмотреть немного прошлое от SQL и обращаться уже в терминах утилит которые даёт монго и не изобретать костыли на SQL стиль?
Konstantin
Спасибо, а к примеру прочитал в что autoIndex: true бьёт по производительности, как это выражается? АвтоИндекс это и есть этот индекс по полю _id?
Nick
autoIndex? это что за опция такая, можно ссылку на доки?
Nick
а это монгус
Konstantin
autoIndex? это что за опция такая, можно ссылку на доки?
Вот тут я немного сам ввел в заблуждение, доки с Mongoose, a не с монго: http://mongoosejs.com/docs/guide.html#indexes Пардон
Konstantin
Но я так понимаю, что всё равно количестви индексов на коллекцию чем меньше-тем лучше, верно?
Nick
короч, т.к. монгус это ОРМ, то он пытается создать инедксы при каждом запуске. Сут ьв том что разработчик может добавить индекс, который сильно нагрузит монгу при следующем старте, для этого как раз автоИндекс и выключают, оставляя создание индексов людям, отвечающим за БД
Nick
И да монга не пересоздает инедксы, если уже такие созданы, поэтмуо это окажет влияние только при первом добавлении индекса
Nick
Но я так понимаю, что всё равно количестви индексов на коллекцию чем меньше-тем лучше, верно?
все завист от кучи условий. Если у вас операции чтения превалируют над вставкой/изменением/удалением, то больше инедксов - лучше
Nick
в обратном случае будут замедлять
Konstantin
Вот это именно то, что хотел знать! Спасибо!
Nick
и своетую пробежаться по остальным ограничениям, не только по индексам, упростит решение проблем
Nick
и самое главное, начинайте добавлять индексы, только когда у вас появляются пробелмы с производительностью запросов. И обязательно используйте explain на запросах до содания индекса и после, чтобы подтвердить, что добавленный индекс начал использоваться
Konstantin
explain это пошаговое объяснение запроса чтобы убедиться в его производительности?
Konstantin
Хорошо, спасибо ещё раз!
Nick
explain это пошаговое объяснение запроса чтобы убедиться в его производительности?
да, показывает из каких шагов состоит план выполнения запроса, и там указывается тип опреации, обычное имеет смысл обращать на COLLSCAN - полное чтение данных по все коллекции, и IDXSCAN - использование индекса.
Anonymous
Здравствуйте. Могу к реплика сету на 3.2.Х добавить несколько реплик 3.6 затем удалить реплики 3.2 ?
SvPupok
Да
SvPupok
Если движок идентичный
Anonymous
не получается сделать initial sync
Anonymous
Fatal assertion 40088 IncompatibleServerVersion: Sync source had no feature compatibility version document at src/mongo/db/repl/replication_coordinator_impl.cpp 679
yopp
Нет, без апгрейда 3.2 до 3.4 нельзя
pplcf
У меня есть документ с массивом уникальных строк и мне нужно передвинуть один из элементов в начало массива
pplcf
как это сделать атомарно?
pplcf
по сути мне нужен $pull: "myElement" и $push: "myElement" с $position: 0, но одним апдейтом
Anonymous
Можете помочь - запускаю через mongod —config /path/to/config - все работает
Anonymous
а через systemctl [initandlisten] Did not find local voted for document at startup.
Anonymous
[initandlisten] Did not find local replica set configuration document at startup; NoMatchingDocument: Did not find replica set configuration document in local.system.replset
Max
Возможно другой конфиг используется призапуске через systemctl?
Max
Не тот который вы через --config указывает е
Anonymous
нашел проблему. В конфиге нужно было форк убрать
A
Ребята,кто скажет,ну что тут за беда?
A
(
Павел
inster - это что такое?
A
inster - это что такое?
Вот огромное тебе спасибо!!!Я весь задолбался)))) +1 тебе в карму
SvPupok
Нет, без апгрейда 3.2 до 3.4 нельзя
Точно, 3.4 с 3.2 перепутал
Dmitry
может кто то посоветовать какой нибудь сервис баз данных, где можно легко настроить и начать работать? хотел упороться в aws, много удобных штук, но не хочу юзать их решения длябаз данных, слишком громозско, и поднимать mongodb тоже не хочу
Dmitry
Mlab
500mb + не годится для продакшана, я юзал...
Dmitry
Походу придётся поднимать монгу(
Amir
Парни, а в монге голосование реплик управляемо как-то?
Amir
Или так пару настроек туда сюда
Amir
Что вы хотите сделать?
Хочу понять возможности
yopp
Возможности решения какой задачи то? Там есть ряд инструментов для расставленния приоритетов.
Petr E
привет. Кто-то может работает с couchDB и PouchDB и может знает, как запретить для базы вести историю изменений для каждого документа? Проблема в том, что при синхронизации из удаленной базы приходит вся эта история на каждый докмент, а у меня все эти изменения диспатчатся на редакс в итоге полается, что один документ может 1000 раз удалиться и еще 1000 записаться, мне нужно только последнее состояние и вообще не хранить все эти изменения.
Anonymous
Всем доброго времени суток, может кто сталкивался у меня база монго за 2015 год занимает 100 гб, делаю копию папки в /var/lib/mongodb , захожу в консоль команда > show dbs; показывает 0.953GB
SvPupok
И? В чем проблема?
Anonymous
ну не видит монго всю базу все 100 гб видит только 1 гб
Anonymous
может кто подсказать?
Max
очень похоже на то, что удалили данные из монги место внутри монги считается свободным, однако на диске занимает место - то есть, к примеру, вы можете влить почти 100 гиг данных сейчас, а места на диске будет занято столько же. надо смотреть версию монги, какой тип хранилища используете и дальше гуглить вообще, раз там монга кажет 1 гиг - проще сделать mongodump всей базы, затем влить в свежую и чистую монгу и посмотреть размер.
Anonymous
монго 2рой версии, дампа нет есть только копия папки базы
Max
Так сделайте дамп
brammator
Столкнулся с mmap failed with out of memory. You are using a 32-bit build and probably need to upgrade to 64 на системе с 512М ОЗУ. До ребута база работала, после - отказывается запускаться. Общий размер конкретной базы 1.5ГБ, максимальный файл 512М, общий размер всех баз вместе - меньше 2ГБ. Возможен ли ремонт на том же хосте? Почему до ребута оно работало и не жужжало? Добавление свапа также не помогло.
Anonymous
Так сделайте дамп
с чего если мне передали только папки базы, после копии которой в консоле видно только 1 гб
brammator
с чего если мне передали только папки базы, после копии которой в консоле видно только 1 гб
mongodump умеет работать с файлами базы (сам mongod при этом должен быть выключен)
brammator
mongodump -d BASENAME --dbpath /path/to/database/
brammator
Как вариант - остановить монгу, вызвать в режиме восстановления, запустить обратно. Перед запуском проверить, что файлы базы принадлежат кому надо.
brammator
(сам только что этим занимался)
brammator
mongod --repair --dbpath /path/to/database/
Anonymous
brammator
да
Anonymous
папка /var/lib/mongodb должна быть пустой?
brammator
не понял вопроса. для чего?