4eburator
Привет всем, как можно настроить эфективный и быстрый подем реплик?
inqfen
Я ансиблом собираю в rs
4eburator
Я про проблему с размером дб...
4eburator
Я ансиблом собираю в rs
При развертке сжимать даные и переносить?
inqfen
Накатывается монга, собирается реплика, заливается дамп
inqfen
Если ты про с 0 поднять
4eburator
Да
inqfen
Ну вот, описал
4eburator
Дамп отдельно катать а не лоадить с мастера?
inqfen
У меня да, так я и про с 0
inqfen
Там нет еще никакой монги
inqfen
А если ты в rs включаешь, то реплики сами стянуть должны БД
4eburator
Нулевка с докера поднимается на разных серваках...
inqfen
Ну у меня так же
4eburator
Время поднятия очень большое... :( многа гиг копируется...
inqfen
Время поднятия очень большое... :( многа гиг копируется...
Ну, как бы если данных не было, то они как-то же должны попасть, щито поделать
4eburator
Можно както настроить чтото типа ограничения по обему чтоб понемногу подкачивал а в это время все что незнает переспрашивал у мастера?
inqfen
Вообще есть шаманизм всякий с fs со снапшотами например, где данные в volume со снапшотом
inqfen
Но это уже от вашей архитетуры конкретной зависит
4eburator
Да я разсматривал кубернетис.. но его долго натягивать и ресурсов не мало требует...
4eburator
Буду пробовать с бакапа перетягивать дб а потом вводить в реплику для дополнения...
yopp
Я про проблему с размером дб...
Разворачивать из снепшотов
Андрей
Привет. Не получается обновить в массиве объект, хочу задать position: 10 например, но ошибка такая MongoError: The positional operator did not find the match needed from the qu ery.
Vova
https://docs.mongodb.com/manual/reference/operator/update/positional-all/#update-all-documents-in-an-array
Андрей
Спасибо , да точно нужно!
Vova
Спасибо , да точно нужно!
там где у тебя find({}) лучше добавь limit(1)
Vova
а то вытянет всю коллекцию
Андрей
Так он меняет всем элементам в массиве это поле, что бы конкретному объекту поменять нужно циклом проходить?
Андрей
А вот как это работает. спасбо!
Vova
А вот как это работает. спасбо!
В принципе $ тоже будет работать но надо тогда условие задать на массив
Андрей
Нужно $each использовать будет?
Vova
Нужно $each использовать будет?
нет, уточнить твой query updateOne({_id: sliderId, slides.position: 12}, '$set': { 'slides.$.position': 13 }) Первому элементу с position: 12 поменяет на 13
Vova
можно и не обязатель position, главное в принципе условие задать для slides поля
Vova
@dd_bb @yatoba
Андрей
Привет. После того как пройдусь циклом и обновлю каждому элементу в массиве поле position, я делаю поиск документа и отправлю его на фронтенд, получаю старый документ. Старые position в элементах массива. А если в базу посмотрю то там position обновился у всех элементов массива.
RusaXXX
Подскажите есть поле в бд. в этом поле могут лежать одно из 4 значений Лучше хранить само значение или что то вроде константы, а потом пребразовывать эти константы в значения
Gleb
а кто-нибудь пользовался https://www.mongodb.com/cloud/stitch можете рассказать хорошо-плохого чего?
Slava
Доброго времени суток! Нужна помощь, пытаюсь с ноды подключиться к монго - коннекшн проходит (использовал урлу вида “mongodb://host:port/database”), но при записи выдает ошибку монго, что нужна аутентификация - начал авторизованно подключаться (mongodb://login:password@host:port/database), но нода перестала вообще подключаться к монго, пишет, что аутентификация не пройдена, хотя все верно. Стартую монго через docker-compose: mongo: restart: always container_name: musician-database image: mongo:latest environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password volumes: - ./data/:/data/db Чтобы решить проблему, пробовал добавить следующий volume к образу (совет с гитлаба): - ./data/mongo/001_users.js:/docker-entrypoint-initdb.d/001_users.js:ro В нем создовал юзера с аксессом на readWrite и аналогичными логин-пароль. Подключаюсь через mongoose, делаю это так: mongoose .connect( mongodb://admin:password@${process.env.MONGO_HOST}:${process.env.MONGO_PORT}/${process.env.MONGO_DATABASE}, { useNewUrlParser: true, useUnifiedTopology: true, bufferMaxEntries: 0, } ) .catch(err => { isError = true; console.error(`Error connecting to mongodb, ${err}`); }); Без аутентификации подключение устанавливалось успешно (понимал я это из then вернувшего промиса от mongoose), с аутентификацией then в промисе не отрабатывает, а вот error’ка с радостью Помогите, пожалуйста, опытные люди, сам не знаю как дальше. Заранее спасибо!
RusaXXX
Есть коллекция с документами. Некоторые документы содержат поля в котором есть запись Иван Сергеевич db.logs.aggregate([ { $match: { $text: { $search: "Ива" } }}]) - не находит документы db.logs.aggregate([ { $match: { $text: { $search: "Иван" } }}]) - находит документы Как сделать вхождение подстроки?
RusaXXX
регулярками
"\"$search\" had the wrong type. Expected string, found regex", когда регулярку пробую
Nick
так надо убрать в начале $text
yopp
Доброго времени суток! Нужна помощь, пытаюсь с ноды подключиться к монго - коннекшн проходит (использовал урлу вида “mongodb://host:port/database”), но при записи выдает ошибку монго, что нужна аутентификация - начал авторизованно подключаться (mongodb://login:password@host:port/database), но нода перестала вообще подключаться к монго, пишет, что аутентификация не пройдена, хотя все верно. Стартую монго через docker-compose: mongo: restart: always container_name: musician-database image: mongo:latest environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password volumes: - ./data/:/data/db Чтобы решить проблему, пробовал добавить следующий volume к образу (совет с гитлаба): - ./data/mongo/001_users.js:/docker-entrypoint-initdb.d/001_users.js:ro В нем создовал юзера с аксессом на readWrite и аналогичными логин-пароль. Подключаюсь через mongoose, делаю это так: mongoose .connect( mongodb://admin:password@${process.env.MONGO_HOST}:${process.env.MONGO_PORT}/${process.env.MONGO_DATABASE}, { useNewUrlParser: true, useUnifiedTopology: true, bufferMaxEntries: 0, } ) .catch(err => { isError = true; console.error(`Error connecting to mongodb, ${err}`); }); Без аутентификации подключение устанавливалось успешно (понимал я это из then вернувшего промиса от mongoose), с аутентификацией then в промисе не отрабатывает, а вот error’ка с радостью Помогите, пожалуйста, опытные люди, сам не знаю как дальше. Заранее спасибо!
попробуйте сначала установить соединение с контейнером через mongo-shell
RusaXXX
так надо убрать в начале $text
у меня полнотекстовый поиск
yopp
Есть коллекция с документами. Некоторые документы содержат поля в котором есть запись Иван Сергеевич db.logs.aggregate([ { $match: { $text: { $search: "Ива" } }}]) - не находит документы db.logs.aggregate([ { $match: { $text: { $search: "Иван" } }}]) - находит документы Как сделать вхождение подстроки?
$text не поддерживает partial match. В поисковых условиях могут быть только списки слов, которые будут приведены к нормальной форме и по этому списку будет осуществляться поиск совпадений https://jira.mongodb.org/browse/SERVER-15090
yopp
всё что вы можете контролировать это phrase match с помощью заключения поисковых терминов в кавычки и match negation с помощью символа минус
yopp
ну и с помощью настроек case sensitivity, diacritic sensitivity и язык стеммера
yopp
по вхождению слова можете, по частичному совпадению слова не можете
Dmitriy
то есть я не могу использовать полнотекстовый поиск по вхождению? а как тогда быть?
вам @yatoba выше уже ответил, используйте $regexp. ну или другие специализированные субд
yopp
варианта три 1) использовать механизмы предварительной подготовки поисковых терминов 2) реализовать свой поиск «для бедных», самостоятельно формируя отдельный аттрибут, в который сложить массив подготовленных поисковых терминов и уже искать по нему. но не будет search score и других плюшек, их нужно будет реализовывать самостоятельно 3) использовать специализированное хранилище для поиска
yopp
помоему монга умеет как-то пересекать $text с другими индексами, так что в 2) можно добавить только префиксы
yopp
но в любом случае, генерировать префиксы нужно самостоятельно
yopp
To use a $text query in an $or expression, all clauses in the $or array must be indexed.
yopp
https://docs.mongodb.com/manual/reference/operator/query/text/
RusaXXX
но это не работает в AF
а обычный поиск по регулярке на больших данных так понимаю будет сильно тормозить?
yopp
зависит от условий
yopp
если это строго prefix match, то более-менее сносно
yopp
ну и у каждого границы «больших» данных свои
RusaXXX
если это строго prefix match, то более-менее сносно
имеете ввиду что других условий нет?
yopp
я имею ввиду что регулярное выражение начинается с \A или ^ якорей
.
Привет
.
Как можно эту айдишку достать ?
.
Пайтон
Korostelev
Всем привет, есть коллекция в которой документы имеют вид: { "ip" : "10.1.1.5", "mac" : "16:88:79:сa:c0:1f", "model" : "UH", "type" : "ap", "version" : "3.7.58.6385", "site_id" : "5ce7b570657c01503b507a7c", } я хочу получить все поля "model" "version" всех документов коллекции кроме тех где site_id: 5ce7b570657c01503b507a7c , подскажите как правильно это сделать?
Slava
Доброго времени суток! Нужна помощь, пытаюсь с ноды подключиться к монго - коннекшн проходит (использовал урлу вида “mongodb://host:port/database”), но при записи выдает ошибку монго, что нужна аутентификация - начал авторизованно подключаться (mongodb://login:password@host:port/database), но нода перестала вообще подключаться к монго, пишет, что аутентификация не пройдена, хотя все верно. Стартую монго через docker-compose: mongo: restart: always container_name: musician-database image: mongo:latest environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password volumes: - ./data/:/data/db Чтобы решить проблему, пробовал добавить следующий volume к образу (совет с гитлаба): - ./data/mongo/001_users.js:/docker-entrypoint-initdb.d/001_users.js:ro В нем создовал юзера с аксессом на readWrite и аналогичными логин-пароль. Подключаюсь через mongoose, делаю это так: mongoose .connect( mongodb://admin:password@${process.env.MONGO_HOST}:${process.env.MONGO_PORT}/${process.env.MONGO_DATABASE}, { useNewUrlParser: true, useUnifiedTopology: true, bufferMaxEntries: 0, } ) .catch(err => { isError = true; console.error(`Error connecting to mongodb, ${err}`); }); Без аутентификации подключение устанавливалось успешно (понимал я это из then вернувшего промиса от mongoose), с аутентификацией then в промисе не отрабатывает, а вот error’ка с радостью Помогите, пожалуйста, опытные люди, сам не знаю как дальше. Заранее спасибо!
Решил проблему тем, что удалил предыдущие данные из дб (в моем случае был контейнер docker-compose, соответственно volume на который указывал /db/data)
Дмитрий
Я новичек. Я в монге хотел сохранять данные такого формата {prop1: 5, prop2:[1,2,3] } Получиться?
Дмитрий
А в prop2:[1,2,3] тип данных в схеме есть массив?
yopp
А в prop2:[1,2,3] тип данных в схеме есть массив?
В монге поддерживаются все типы, которые есть в BSON: https://docs.mongodb.com/manual/reference/bson-types/ https://bsonspec.org