Roman
Findandupdate
https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/ ?
Anonymous
Roman
Roman
collection.findAndModify is deprecated)000)))0)
Roman
findOneAndUpdate
Anonymous
Я же так и написала)
Omer
#mongorestore #mongodump
Всем доброго дня!
Коллеги, не могли бы вы подсказать мне почему после операции mongorestore на реплику сет с дамрпа взятого с помощью mongodump записи присутствуют, какое то время, а потом исчезают будто их и не было?
При каких обстоятельствах такое может иметь место и как сделать так, чтобы этого более не происходило?
Заранее спасибо!
Omer
в коллекции oplog есть трейс того, что записи были созданы и удалены (хотя удаление никто не делал, по крайней мере пользователь не делал)
Yurii
Omer
впервые слышу об этом
можете направить ссыль, где об этом можно подробнее почитать?
Omer
https://docs.mongodb.com/manual/tutorial/expire-data/
если это то, о чем вы говорите, @yurii_chikhrai, то нет...такого я намеренно не делал
Omer
Ок
Я посмотрю, спасибо)
Omer
@yurii_chikhrai вызов db.collection.getIndexes() не показал, что на данной коллекции есть TTL индексы
yopp
удаляют имено записи или дропают коллекцию?
Omer
записи пропадают, коллекция на месте
yopp
Omer
да
Omer
сейчас пример записи пришлю
Omer
{"ts":"6701170788839457161","t":"17","h":"-2871703513068133456","v":2,"op":"d","ns”:”DB-demo.binary.files","ui":"uM2f/qBSTHKk9BN/qYg62g==","wall":"2019-06-11T07:25:08.617Z","o":{"_id":"5ce5465917dfa90001e7971b"}}
yopp
у вас аутентификация включена?
Omer
да
yopp
тогда отберите права на удаление у всех пользователей и смотрите в логи, кто сломается
yopp
ещё можете включить профайлер и посмотреть на client, appName
yopp
чтоб понять откуда запросы на удаление падают
Omer
спасибо, попробую реализовать
еще вопрос
может быть такое, что dump c replica set брался без флага --oplog и рестор делался, соответствено, без --oplogReplay на реплику и у нас есть конфликтные записи, которые и удаляются потому, что они не были сохранены/восстановлены с помощью --oplog?
yopp
нет
yopp
99% что записи удаляет какой-то клиент
yopp
начините с профайлера
Omer
хорошо, спасибо)
yopp
https://docs.mongodb.com/manual/tutorial/manage-the-database-profiler/#enable-and-configure-database-profiling
yopp
yopp
dump по сути просто делает find() по каждой колекции и пишет из курсора в файл
yopp
если включить oplog, то dump параллельно будет ещё и из rs.oplog писать в файл
yopp
и как следствие те операции которые не попали в find, попадут в оплог
yopp
и при восстановлении, restore сначала сделает insert из дампа, а потом проиграет записаный оплог, чтоб выполнить те опреации, которые потенциально не попали в дамп
yopp
никакой магии, никаких скрытых смыслов
Omer
-3 дня жизни к 6ти сообщениях)))
Omer
ок, спасибо за наводки)
Ivan
ещё про fsynclock можно наверное написать
yopp
он тут вообще никаким боком
Ivan
тогда не надо про него писать
yopp
fsync он про синхронизацию состояния с дисковым хранилищем
Egor
Приветствую! Есть ли возможность при помощи pymongo исключать в выборке ObjectID более элегантно чем вот так? db.jobs.find({}, {"_id": 0})
Egor
предполагаю, может быть есть какой-нибудь параметр для курсора
Egor
просто слать bson как по мне гораздо менее удобно, да и этот параметр откровенно говоря на фронте не нужен)
yopp
Egor
но он задается в конкретном запросе. Может это как-то можно прописать для курсора глобально?
yopp
Нет
Egor
печалька
Egor
помню в постгрешном psycopg2 была фича типа dictcursor или listcursor который при инициализации подключения к бд задается
Egor
предположил что и тут что-то подобное может быть
yopp
Нет, не печалька. :) _id это уникальный идентификатор документа
Egor
ну я не сомневаюсь в полезности этого значения на уровне кишков базы данных, или даже некоторых событий на бэкенде. Но мне например нужно слать на фронт json с документом хранимым в бд, и слать его вместе с этим айди - целая история
yopp
Это обязательный атрибут и без него вы не сможете отличить два одинаковых документа друг от друга или обратиться к конкретному документу без использования другого уникального индекса.
Egor
в прочем может быть, еще не привык к местным правилам хорошего тона)
Egor
а почему так устроено, что он забирается как объект, а не строка например, да так что выбора нет
Egor
?
yopp
Объект?
Egor
ну, оно не сериализируется в json, только как bson
Egor
из-за ругани на то что вот этот вот objectid это объект и не может сериализироваться
yopp
У монги даже есть своя extended json нотация, для представления типов которых нет в json. Если в вашем языке библиотеки не поддерживают эту нотацию, то это к ним вопрос.
ObjectId сериализуется в json как {“$oid”: “hexstring”}
Egor
Спасибо! Буду копать в этом направлении
yopp
Но вы можете самостоятельно сериализовать его в строку например
yopp
Монговцы предлагают бесплатные входные билеты на Mongo World
Купон «dev100»
Если вы где-то в районе нью-йорка, почему бы и нет :)
https://www.mongodb.com/world
yopp
4.0.10 (May 31) ◦ 3.6.12 (Apr 8) ◦ 4.2.0-rc0 (Jun 5)
События:
• 17–19 июня, Нью-Йорк, Конференция: MongoDB World (900$ или 0$ с купоном dev100)
• Плейграунд для запросов
• Документация
• Официальные курсы по MongoDB
Stable: 4.0.10 | Bugfix: 3.6.12 | Legacy: 3.4.20 (Mar 13) | Dev: 4.2.0-rc0 (Jun 5)
End of life: 3.2.21 (Sep ’18), 3.0.15 (Feb ’18)
Pavel
Здраствуйте, есть кто?
Й
Здравствуйте, а у вас есть че?
Pavel
Да вопрос)
Никита
hi
Pavel
Есть, так докумен, как мне доставить все города одним списком.
Никита
yopp
Pavel
спасибо!
Pavel
А может еще подскажете как В OMD это сделать? 😊
yopp
К сожалению, я не знаю что такое OMD
Pavel
https://www.doctrine-project.org/projects/doctrine-mongodb-odm/en/1.2/reference/aggregation-builder.html
yopp
Ужас какой, нет чтоб дать возможность нативно писать шаги, они туда накрутили какой-то свой DSL. Ни чем не смогу помочь. Попытайтесь пайплайн переписать используя примеры из документации