yopp
Иначе изменения которые произошли в коллекции пока она скачивалась выпадут из оплога и восстановить консистентное состояние не получится
Elinka22
Иначе изменения которые произошли в коллекции пока она скачивалась выпадут из оплога и восстановить консистентное состояние не получится
Вот, допустим есть две коллекции, a и b. Он накатывает оплог после того как скачает коллекцию a, или когда коллекции a и b скачаются полностью?
yopp
Точно не помню, но по-моему после завершения синхронизации всех коллекций
yopp
С точки зрения корректности состояния разницы нет
yopp
Отмечу что там накатка оплога происходит в несколько фаз
Elinka22
Ещё остался вопрос про find. У нас просто был случай, в архитектуре PSA отвалилась нода и оплог уехал далеко. Пришлось делать initial sync. Уцелевшая PRIMARY была сильно нагружена и запуск репликации её сложил полностью. Количество коннектов стало в 8 раз больше. В логах часто проскакивали ошибки о том, что не удалось взять lock, отсюда у меня вопрос и возник, как работает репликация изнутри. Что бы потом, если потребуется, переделать архитектуру. Я правильно понимаю, что оно делает find на той ноде, откуда идёт синхронизацию, а на той, куда оно накатывается, insert?
yopp
Да, процесс примерно тот-же который при mongorestore
Elinka22
Лок срабатывает только на время выполнения запроса find? И в результат попадает вся коллекция? Типа как SELECT * from в СУБД?
Elinka22
Рекомендую почитать вот это: https://docs.mongodb.com/manual/faq/concurrency/
Вот как раз сейчас эта страница у меня и открыта 🙂 Тяжело продираться сквозь английский
yopp
Т.е опыт блокировок в реляционных базах к монге вообще не применим
yopp
В монге нет концепции user defined locks
yopp
Единственное что может сделать пользователь, это включить глобальный write lock, для целей обслуживания
Elinka22
Ну да, это что бы, например, сделать снепшот БД…
Elinka22
Уф, дочитаю ту документацию и приду ещё. Спасибо!
Roman
Почему у меня find nextFetch : { $lt : new Date()} не возвращает что было в прошлом ? Типо с датами что то не так ? Если нада в прошлом она же меньше правда ?
Roman
Проверьте что у вас поле nextFetch действительно хранится как дата, а не как строка
Да как дата даже больше, она сама по себе апдейтиться и не знаю как так , сижу просто синий целый день,
Roman
я просто делаю find а в базе уже другая дата
Roman
Почему такое может быть может кто подсказать я просто не понимаю что прыисходит
Roman
Атомарность изменений гарантируется только на уровне документов и эта гарантия сохраняется при чтении
Так с 4 версии нормальные транзакции же появились на уровне коллекций, или я неправильно понял ?
yopp
Да, верно
Roman
Покажите пожалуйста ваш запрос
Всё вроде ок у меня походу на бекграудне ехал скрип которые изменял их
lutik
Подскажите пожалуйста почему может не рабоать сортировка по дате
lutik
lutik
хочу отсортировать arr по полю date
Anonymous
Что?
yopp
$sort сортирует документы, а не элементы в массиве внутри документа. К сожалению единственный способ сделать это внутри агрегации это $unwind + $sort + $group, так что дешевле сортировать на клиенте
lutik
Кейс просто такой, что такой массив может вырасти до 1000 записей, сортировать на беке будет больно
lutik
Тянуть всю коллекцию и сортировать, ох ох ох
yopp
можно попробовать https://docs.mongodb.com/v5.0/reference/operator/aggregation/function/#example-1--usage-example
yopp
1000 элементов в массиве сортировать совсем не дорого :)
lutik
А таскать коллекцию ?
lutik
Ну с Монги на бек
yopp
а зачем вам её всю таскать?
lutik
Вот сейчас у меня 58 тыс жсонов
lutik
В каждом по 2-6 таких массивов
lutik
Каждый массив вырастет в среднем до 600
lutik
Получится, что 58 тыс коллекций, где в каждой по 600+- массивов объектов
lutik
Это ерунда или нет)))? Я просто не знаю
lutik
То есть 10 тыщ чел одновременно получают свои данные, мне придётся для 10 тыщ чел вытянуть по 600 записей для каждого
Данила
Ребят можете скинуть статьи или видосы про миграции mongodb
Данила
Хочу в данных убрать не использующийся атрибут
Алекс
ребят, такой вопрос, а что enum нету в монге? мне waterline пишет The attribute `profileType` on the `accounts` model contains invalid properties. The property `enum` isn't a recognized property.
Google
Всем привет можете помочь у меня не получается выбрать дату который указанно / тоист я должен получить из базы скажем с 2021-06-01 до 2021-07-30 MongoDB - Get Data from startDate to endDate
Google
но неправильно работает
Roman
но неправильно работает
что-то с типами возможно не так, что если писать что-то вроде new ISODate("2012-01-12T20:15:31Z") ?
Google
выводит все данные или нечего
Google
есть кто разбирается в Mongodb ? у меня в базе дате формат 2021-06-17T09:06:43.228Z такой
Google
поиск по датам не получается скажем с 2021-06-01 до 2021-07-30
Roman
поиск по датам не получается скажем с 2021-06-01 до 2021-07-30
в базе оно как стринга хранится ? Если как стринга, то оно как стрингу его и будет сравнивать
Roman
Привет, а можно искать по ключу Map greater/less than ?
Roman
есть способ как проверить ?
Через атлас посмотреть
Google
Вот в базе
Google
что делать теперь ?
Roman
Вот в базе
а что это там за пробелы ?
Google
Google
вот при эдит такой пробел поевляется
Roman
что делать теперь ?
сори давно работал с монгой, может там надо какую-то схему для данных добавить..
Google
не ужели нету способ ?
Google
я в инете проверил все не нашёл
Roman
Кака можно сделать find и сразу update ? Вижу есть findOneAndUpdate но нету findAndUpdate?
Данила
Ребят привет
Данила
Как миграции писать ?
Roman
я в инете проверил все не нашёл
надо чтобы в базе была дата. Конвертни или хз
Roman
надо чтобы в базе была дата. Конвертни или хз
конвертнуть можно так db.collection.update( {}, [{ $set: { a: { $toDate: "$a" } } }], { multi: true } )
Google
e у меня payment_date куда прописать ?
Google
db.collection.update( {}, [{ $set: { payment_date: { $toDate: "$payment_date" } } }], { multi: true } )
Google
?
Google
сейчас
Roman
ну только свою коллекцию подставь
Google
ну только свою коллекцию подставь
После обновление формат даты изменился
Roman
После обновление формат даты изменился
ну так норм, это же теперь не стринга, у тебя здесь нет власти