4eburator
Привет всем, как можно настроить эфективный и быстрый подем реплик?
inqfen
Я ансиблом собираю в rs
4eburator
Я про проблему с размером дб...
inqfen
Накатывается монга, собирается реплика, заливается дамп
inqfen
Если ты про с 0 поднять
4eburator
Да
inqfen
Ну вот, описал
4eburator
Дамп отдельно катать а не лоадить с мастера?
inqfen
У меня да, так я и про с 0
inqfen
Там нет еще никакой монги
inqfen
А если ты в rs включаешь, то реплики сами стянуть должны БД
4eburator
Нулевка с докера поднимается на разных серваках...
inqfen
Ну у меня так же
inqfen
4eburator
Время поднятия очень большое... :( многа гиг копируется...
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
Vova
https://docs.mongodb.com/manual/reference/operator/update/positional-all/#update-all-documents-in-an-array
Андрей
Спасибо , да точно нужно!
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 обновился у всех элементов массива.
Daniil
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: "Иван" }
}}])
- находит документы
Как сделать вхождение подстроки?
Nick
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
Slava
RusaXXX
Nick
yopp
yopp
всё что вы можете контролировать это phrase match с помощью заключения поисковых терминов в кавычки и match negation с помощью символа минус
yopp
ну и с помощью настроек case sensitivity, diacritic sensitivity и язык стеммера
RusaXXX
yopp
по вхождению слова можете, по частичному совпадению слова не можете
RusaXXX
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/
yopp
yopp
зависит от условий
yopp
если это строго prefix match, то более-менее сносно
yopp
ну и у каждого границы «больших» данных свои
RusaXXX
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 , подскажите как правильно это сделать?
yopp
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]
}
Получиться?
Dmitriy
Дмитрий
А в prop2:[1,2,3] тип данных в схеме есть массив?