Dmitriy
отлично, тогда делаем такой финт ушами
db.setProfilingLevel(2);
Dmitriy
затем выполняем запрос к базе, который работает неправильно
Araik
получаю время в формате 2020-03-18 , перевожу в unixtime и умножаю на 1000 чтобы получить миллисекунды
Araik
момент, щас попробую, а что это?
Dmitriy
и смотрим какой запрос реально пришел в базу:
db.system.profile.find({
"ns": "тут имя вашей коллекции",
"ts": {$gte: ISODate("2020-03-19 00:00:00")},
}).limit(10).sort( { ts : 1 } ).pretty()
Nick
Nick
Dmitriy
зачем? вам какой временной диапозон надо чтобы попал в выборку с точностью до секунд?
Nick
и использовать при этом $lt чтобы данные за 00:00:00 20 числа не попали в выборку
Araik
Nick
'timestamp': {
$gte: ISODate('2020-03-18T00:00:00'),
$lt: ISODate('2020-03-20T0:00:00')
}
Nick
Nick
в монге есть
Nick
хотя это может быть не критично с точки зрения бизнеса - в это время может и данных вообще не бывает)
Araik
в моем случае секунду роли не играет, погрешность актуальности данных до 1 минуты может составлять 😅
Nick
Seva
Ребят, я не пойму, вроде папка бд указана /var/lib/mongodb, но в ней не создается моя указанная база, но хотя запись происходит в базу...
Seva
Seva
и на сколько я понял, должна создаваться база с названием ClassicGame.
Seva
или я не правильно понимаю ?
Nick
или я не правильно понимаю ?
у монги все коллекции без подпапок по базам. смотрите наличие базы и коллекций в монгошеле через выполнение запросов к базе
Seva
yopp
Igor
Коллеги, подскажите, как обезопасить пользователя от двойной покупки? Не нашёл примера с transaction(
Yoda
Кто знает ссылку на инфу или вариант решения. MongoDB.
Есть три проекта... На одной винде. Во всех уроках или курсах инфа про то, как создать одну коллекцию в монго..
Но если у меня, есть три проекта.. Как создать три базы независимые друг от друга. И надо, чтоб они были под разными логинами-паролями. В идеале на разных портах. Как это настроить? И можно ли? Бо пока из вариантов решения говорят создать, есче три виртуалки с отдельными базами проекты не большые нет смысла так мучатся. Сделать бы на одной но независимо както...
ПС: в монго только разбираюсь(учусь), во всех сттьях реч про один проект и одну колекцию. Или про то как одну базу рабить на разные сервера и разделить запросы.
Dmitriy
сложно объясняете, но самое простое решение которое приходит в голову - 3 докер образа на разных портах. в итоге 3 независимые базы и для каждой можете строить свою конфигурацию и свой уровень изоляции
Yoda
ех, не охото ставить докер
Daniil
Держите все на одном сервере, просто используйте разные базы данных
Daniil
Порт правда будет одинаковый, но это вряд ли критично в вашем случае
Sparkling
пытаюсь вернуть на фронт проапдейченый документ, но возвращается старый, что я делаю не так?
Sparkling
спасибо
Yoda
Boris
Всем привет! Подскажите плз, как сделать так, чтобы метод не просто отрабатывал, а также и сохранял всю добавленную инфу
MAPC
Добрый вечер! Вот такой вопрос возник. В целях тестирования развернул три шарда с реплика сетами, конфиг сервер тоже реплика сет и роутер. Первые несколько часов наполнение проходило нормально, но потом возникла ситуация при которой контейнер с нодой одного шарда упал потому что не смог зароллбечить транзакцию в оплог и вставки в коллекцию встали. с такой ошибкой
bulk write error: [{[{Write results unavailable from shard02a:27019 due to Could not find host matching read preference { mode: "primary" } for set shard02}]}, {<nil>}]
в логе контейнера вот такая картина
MAPC
MAPC
Возникло два вопроса
MAPC
Почему упал контейнер?
Почему остановились вставки, ведь вторая нода в этом шарде живая?
MAPC
Спасибо!
MAPC
да , было три шарда по две ноды в каждом
Vladimir
ну вот и причина, почему вставка остановилась - вторая нода не набрала кворум для голосования (а это 50% + 1 нода) и потому новый лидер не был избран
Vladimir
а вот почему упало не подскажу
Vladimir
возможно тоже что-то связано с тем, что при ролбэке не нашлось мастера
MAPC
Мастера бы не нашлось если бы откат транзакции происходил уже после падения ноды
MAPC
А за подсказку с кворумом спасибо большое
yopp
починил плейграунд
hostmit
Товарищи, у меня есть деплоймент энвайромента, который включает в себя монгодб. Изначально базы нет, приложение создаёт ее на ходу. Мне нужно на индексы некоторых коллекций установить ретененшен или сделать их каппед. Как лучше реализовать?
hostmit
До запуска сервисов заранее добавить TTL на индекс которого ещё нет у меня не выйдет
hostmit
Читаю есть вариант db.runCommand( { convertToCapped: 'events', size: 8192 }. В целом это даже лучше, чем TTL. Какие-то минусы этой штуки есть?
hostmit
Хотя по идее правильно, в docker-entrypoint-initdb.d положить скрипт, который создаст сразу capped collection с нужным мне максимальным числом.
hostmit
Да. Оно ещё и js кушает там. Кул. Сделать проверку если существует коллекция конверттокаппед, если нет создать каппед.
hostmit
Подскажите, в митинге с С# лидом, сообщили что каппед коллекции накладывают какие-то ограничения на работу с ней, индексы и что-то там еще. В доках ничего такого найти не могу. Я что-то упускаю?
hostmit
Ага, есть ограничения. Нельзя апдейт/делит и т.п.
Андрей
Правильно я понял этот мессадж?
"В коллекции photoseries есть поле originalImage и его значение дублируется ?"
Но при создании докуменда у меня там нет такого поля даже.
Возможно это связано с плагином "mongoose-auto-increment".
Кто то сталкивался с этим ?
imageSchema.plugin(autoIncrement.plugin, { model: 'Image', field: 'imageId' });
MongoError: E11000 duplicate key error collection: yourmoments.phot
oseries index: originalImage.imageId_1 dup key: { originalImage.imageId
: null }
yopp
yopp
yopp
Вероятнее всего у вас счётчики считаются неконсистентным способом
Андрей
yopp
Да
yopp
Красивые цифры никому не нужны
Андрей
Tsikhan
Добрый день! подскажите пожалуйста. Удалили базу, которая занимала 3 ТБ, но место на диске не освободилось. А как освободить место на диске?
yopp
yopp
Отсоритруйте их по размеру и посмотрите не осталось ли файлов от коллекции. При удалении коллекции монга удаляет файлы-хранилище индексов и самой коллекции
Tsikhan
Tsikhan
yopp
А сколько данных осталось?
yopp
По версии show dbs
yopp
Для того чтоб не удалить что-то случайно, вам нужно по всем коллекциям и индексам в базе прочитать и сохранить куда-то название файлов-хранилищ. После чего удалить те, которые не попали в список
yopp
Для этого вам надо пройтись по всем базам и сделать stats(includeIndexDetails:true). В ключе wiredtiger будет ключ, по-моему, uri где будет имя файла