Владимир Т
[mongo@mongobackup bin]$ ./bsondump /u01/backup/07.07.2019/oplog.bson 2019-07-08T18:01:53.588+0600 0 objects found 2019-07-08T18:01:53.588+0600 unexpected EOF
Владимир Т
или
Владимир Т
[mongo@mongo backup]$ bsondump /u02/backup/u02/backup/04.07.2019/oplog.bson 2019-07-08T18:28:41.004+0600 unable to dump document 1: Document is corrupted 2019-07-08T18:28:41.004+0600 1 objects found 2019-07-08T18:28:41.004+0600 invalid BSONSize: -666561302 bytes
yopp
Логично
yopp
Потому что вам сначала необходимо разархивировать содержимое
Владимир Т
а когда я не использую параметр —gzip я могу посмотреть содержимое
Владимир Т
Владимир Т
да, но что разархивировать?
yopp
Да, потому что вы не используете gzip
Владимир Т
в мануалах я не нашел как открыть oplog.bson после дампа —gzip, есть только восстановление, после которого при применении oploga я получаю что 1 документ corrupted
yopp
gunzip -c oplog.bson | bsondump -
yopp
Зачем вам его открывать. Расскажите ещё раз о том с какой проблемой вы пытаетесь справиться
Владимир Т
с проблемой при восстановлении БД с параметром --oplogReplay
yopp
В чем она заключается?
Владимир Т
В чем она заключается?
я попробую воспроизвести проблему и напишу вам как восстановлю бэкапа
yopp
🤷🏻‍♂️
Lev
Нарисуйте :)
Да можно и словами. Все просто. Каждая запись в коллекции имеет свойство parentId и получается, что коллекция разбита на деревья или графы. Это я так документы пытаюсь хранить, если есть способ каноничней/верней - скажите. Так же у каждой записи из одного дерева свойство historyId имеет одинаовое значение. По этому значению я могу найти все версии одного документа. Посмотрев различия в между версиями в одном графе я могу посмотреть кто что менял и по какой причине (под причину отдельное поле). Остается задача найти те записи в одной history, которые не имеют потомков.
Владимир Т
🤷🏻‍♂️
[mongo@mongo 15.07.2019]$ gunzip -c oplog.bson | bsondump /u02/backup/15.07.2019/oplog.bson 2019-07-15T18:21:56.208+0600 unable to dump document 1: Document is corrupted 2019-07-15T18:21:56.208+0600 1 objects found 2019-07-15T18:21:56.208+0600 invalid BSONSize: 866495831 bytes
yopp
Но я ещё раз задам вопрос: зачем вам bsondump вообще
Владимир Т
yopp
С какой целью?
Владимир Т
ну потомучто при mongorestore я получаю аналогичную ошибку
yopp
Так, теперь мы начинаем приходить к реальной проблеме
yopp
Как вы восстанавливаете с помощью mongorestore?
Владимир Т
./mongorestore --oplogReplay --gzip
yopp
Попробуйте вместо —gzip использовать —archive
Владимир Т
без параметра —gzip?
Владимир Т
просто —archive
yopp
Да
Владимир Т
сейчас сделаю дамп без опции —gzip c опцией --archive
Vladimir
db.collection.dropIndex() Сохранит значение?
Alexander
У меня логи после ротации превращаются в бинарные файлы. Кто-нибудь сталкивался?
yopp
Это не дамп, это копия dbPath
yopp
db.collection.dropIndex() Сохранит значение?
Значение чего? Эта команда удалит индекс, данные в коллекции останутся.
Vladimir
спс
Anonymous
Это не дамп, это копия dbPath
А как мне данные из него получить?
yopp
А как мне данные из него получить?
Скопировать содержимое в какую-то временную директорию и указать эту директорию как dbPath в конфигурации или опциях монги
Владимир Т
Да
увы просто с параметром —archive дамп весит много и не влез на диск
Valdis
всем привет. могу ли я через mongoose nodejs сделать запрос find с условием выборки чтобы какое-то поле было меньше какого-то числа?
Daniil
https://docs.mongodb.com/manual/reference/operator/query/lt/
Valdis
а такой вопрос. у меня есть документ пользователь и у каждого пользователя есть роль в sql я бы создал таблицу ролей и потом просто айдишник из той таблицы указывал бы. в монге best practice просто текстом роль указывать или как?
Alexander
Возможно архивируются
# file mongod.log.2019-07-14T07-21-41 mongod.log.2019-07-14T07-21-41: data
yopp
увы просто с параметром —archive дамп весит много и не влез на диск
Попробуйте оба ключа, на одной небольшой коллекции через nsInclude
yopp
За одно, убедитесь что у вас и mongodump и mongorestore одной версии
Владимир Т
Спасибо, попробую, проверю
Andrey
Да можно и словами. Все просто. Каждая запись в коллекции имеет свойство parentId и получается, что коллекция разбита на деревья или графы. Это я так документы пытаюсь хранить, если есть способ каноничней/верней - скажите. Так же у каждой записи из одного дерева свойство historyId имеет одинаовое значение. По этому значению я могу найти все версии одного документа. Посмотрев различия в между версиями в одном графе я могу посмотреть кто что менял и по какой причине (под причину отдельное поле). Остается задача найти те записи в одной history, которые не имеют потомков.
Можно добавить поле childId (в зависимости от ситуации писать туда одно значение или массив). Если в childId ничего нет — вот и нашли что нужно. Или если не хочется делать такой двунаправленный список, то помечать хвост булевым значением. isTail. По умолчанию true, при указании этого документа в parentId другой ноды ставить isTail false.
Маfеt
@dd_bb
4eburator
Привет
4eburator
Я ищу помощь с выбором из БД
4eburator
Пожалуйста, помогите мне выбрать из коллекции только документы с "(set.ID=1 and NOT set.TIME>now) or no set.ID" Документы выглядят так: { user:123, set:[ { ID:1, time:1863207076 }, { ID:1, time:1563207076 }, { ID:1, time:1263207076 }, { ID:2, time:1863207076 }, { ID:4, time:1563207076 }, { ID:1, time:1263207076 } ] }
yopp
и ещё https://docs.mongodb.com/manual/reference/sql-comparison/
Roman
приветы!
Roman
срочный простой вопрос
Roman
https://docs.mongodb.com/manual/reference/method/db.collection.findOne/ projection в драйвере многи ноды depreceated
Roman
и чего теперь?
Roman
https://mongodb.github.io/node-mongodb-native/3.2/tutorials/projections/
Roman
через жопу
Roman
collection.findOne(...).project is not a function
Roman
async getUserByToken(token) { const collection = await this.db.collection('users'); const exist = await collection.findOne({ token, tokenExpire: { $gt: new Date().getTime() } }, { fields: { _id: false, username: true, id: true, service: true, secret: true } }); return exist; } как такое исправить в рассово верный?
yopp
и я не уверен что монга умеет в булевые параметры
Roman
ключ fields: во втором аргументе не нужен
нужен, без него в последней версии драйвера не работает projection
Roman
я изначально без него и писал код
Roman
эти вопросы я вообще не задавал)
yopp
https://docs.mongodb.com/manual/reference/method/db.collection.findOne/#specify-the-fields-to-return
Roman
у меня все работате прекрасно с этим куском кода
Roman
yopp
это монгус?
Roman