Vova
А как одним словом назвать всё это: $push $set $pull $position? хочу почитать об этом
Anonymous
тремя
Anonymous
Array Update Operators
Anonymous
https://docs.mongodb.com/manual/reference/operator/update-array/
Andrey
Доброе утро. Как можно выявлять битые коллекции и почему они возникают?
AstraSerg
Доброе. Битые коллекции? Что за зверь?
Anonymous
Kmsan õzi
Andrey
Доброе. Битые коллекции? Что за зверь?
при копировании базы выпадает такое сообщение 1s2:PRIMARY> db.copyDatabase("pro","rg") { "errmsg" : "exception: BSONElement: bad type 41", "code" : 10320, "ok" : 0 }
Anonymous
hi
AstraSerg
it is not simple, it is VERY simple :)
AstraSerg
here it is https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
AstraSerg
It is not very well when you learn only by example. You must read the documentation at least from time to time.
Andrey
а, теперь ясно. Тогда вам сюда https://docs.mongodb.com/manual/reference/command/repairDatabase/
понятно что мне туда. Вопрос как это отслеживать, а главное как теперь найти коллекцию с которой траблы, тупо лопатить логи монги?
Anonymous
done
Anonymous
thankyou @AstraSerg 👍
AstraSerg
AstraSerg
понятно что мне туда. Вопрос как это отслеживать, а главное как теперь найти коллекцию с которой траблы, тупо лопатить логи монги?
Так вам и не нужна коллекция. У вас же ошибка вылетает при копировании БД, и rapair отностися к БД Или вы хотите превентивно проверить всё на наличие ошибок?
Andrey
Так вам и не нужна коллекция. У вас же ошибка вылетает при копировании БД, и rapair отностися к БД Или вы хотите превентивно проверить всё на наличие ошибок?
копирование отвалилось по причине битого индекса или проблемы с коллекцией насколько я понял. Теперь, чтобы выполнить процедуру копирования мне получается нужно найти и починить коллекцию или индекс. И да хотелось бы как то отслеживать наличие таких проблем. Пока вижу только через логирование как то это смотреть. Думал может есть какая то надстройка или инструмент для отслеживания
Davydov
день добрый, что-то туплю, и гугл не подсказывает где... есть колекция с несколькими миллионами записей, если я делаю через консольного клиентав ней запрос: db.mycol.find(myfilter).sort({_id:-1}).limit(1); отрабатывает моментально и выдает результат, пытаюсь сделать тоже самое через nodejs, вытягивает из курсора данные около полуминуты... с чем то может быть связано?
Davydov
такс, пардон, похоже где-то не там я затупил, посносил весь лишний код, заработало...
Michail
Подскажите в какую сторону копать - пишем простые данные по загрузке системы каждую минуту в монго. есть же какие то аггрегирующие функции ? Чтобы на стороне базы проводить усреднения ?
Anonymous
Qoloyslor ey
Davydov
причина была в том, что parseInt на число в фильтре не сделал, которое пришло в виде строки...
AstraSerg
Andrey > мне получается нужно найти и починить коллекцию или индекс. нет, вам нужно починить БД
Gleb
Привет, подскажите, как решить
Gleb
Mongoose 5.x disallows passing a spread of operators to Model.aggregate(). Instead of Model.aggregate({ $match }, { $skip }), do Model.aggregate([{ $match }, { $skip }])", name: "MongooseError" }
Gleb
При этом, всё по доке вроде сделано: .aggregate([ { $match: { userId } }, { $addFields: { campaigns: { $filter: { input: '$campaigns', as: 'campaign', cond: { $eq: ['$$campaign.isActive', true] } } } } }, { $project: { campaigns: { _id: 1, targeting: 1, position: 1, type: 1, // date: 1, // name: 1, }, widget: 1 } }]) .exec()
Andrey
Какая версия монги?
TokuMX mongo shell v2.0.2-mongodb-2.4.10
AstraSerg
TokuMX mongo shell v2.0.2-mongodb-2.4.10
2.4 разве ещё можно использовать??
yopp
2.4 разве ещё можно использовать??
Давайте без оценочных суждений
Andrey
это типа намек, что 2.4 ансаппортед?
yopp
TokuMX mongo shell v2.0.2-mongodb-2.4.10
А там монга или tokumx?
AstraSerg
yopp
не, я серьёзно
У меня до недавнего времени вообще 1.0.х крутилась для личных нужд
Andrey
видимо tokumx
AstraSerg
У меня до недавнего времени вообще 1.0.х крутилась для личных нужд
...а казались приличным человеком.... (шутка) :)
Andrey
tokumx:v3.1
Constantin
А я на второй версии учился, была книжка даже с писающим мальчиком от одного из создателей MongoDB
yopp
видимо tokumx
Ну вот и ответ на вопрос «почему бьётся».
yopp
Это скорее всего недоделки в патче/форке
yopp
Я вам настоятельно рекомендую запланировать переезд с tokumx, это мёртвое решение
yopp
Percona TokuMX Percona TokuMX has been EOL’d.
yopp
https://www.percona.com/software/mongo-database/percona-tokumx
Andrey
Ну вот и ответ на вопрос «почему бьётся».
каюсь, верю что надо уходить на монго) Досталось в наследство, пока не богатый опыт в монго. Переезд в планах стоит, как только прокачаюсь
Andrey
Пока, даже представить сложно как все это портировать. Починить бы то что есть
yopp
Вы ничего не почините. Это неподдерживаемый форк монги, который уже 4 года вообще не разрабатывается. Им пользовалось в лучшем случае несколько тысяч человек
yopp
Скорее всего проблема с copy/clone в использовании неспецифицированных bson типов, для внутренней разметки или ещё чего
Andrey
тогда как перенести\склонировать данные на новое если такие траблы?
Andrey
есть какие то бест практис где почитать?
yopp
Вам вероятно поможет mongodump
yopp
Но может и не помочь
Andrey
оптимистично
yopp
разворачиваете standalone 4.0, останавливаете запись в tokumx, запускаете mongodump, ждёте завершения, делаете mongorestore
yopp
переключаете клиентов на 4.0
yopp
оптимистично
к сожалению, когда было принято решение использовать tokumx, принимающие решение плохо понимали риски
yopp
использование третесторонних форков, патчей и плагинов рано или поздно заканчивается вот такой вот ситуацией
yopp
Тоже самое, рано или поздно, ждёт тех, кто вписался в Percona Server for MongoDB
AstraSerg
тогда как перенести\склонировать данные на новое если такие траблы?
Кстати, вы можете провести пробный дамп/рестор прямо не прерывая работу боевой БД. Просто для теста, не возникнет ли ошибок. Потом можно отправить несколько запросов, аналогичных боевым к новой БД
Gleb
up
Gleb
Mongoose 5.x disallows passing a spread of operators to Model.aggregate(). Instead of Model.aggregate({ $match }, { $skip }), do Model.aggregate([{ $match }, { $skip }])", name: "MongooseError" }
Gleb
При этом, всё по доке вроде сделано: .aggregate([ { $match: { userId } }, { $addFields: { campaigns: { $filter: { input: '$campaigns', as: 'campaign', cond: { $eq: ['$$campaign.isActive', true] } } } } }, { $project: { campaigns: { _id: 1, targeting: 1, position: 1, type: 1, // date: 1, // name: 1, }, widget: 1 } }]) .exec()
AstraSerg
up
я не могу помочь, извините
Gleb
и гугл молчит, будто никто с таким не сталкивался
Andrey
Кстати, вы можете провести пробный дамп/рестор прямо не прерывая работу боевой БД. Просто для теста, не возникнет ли ошибок. Потом можно отправить несколько запросов, аналогичных боевым к новой БД
СДелал более топорно. через МонгоЧиф нашел порядковый номер коллекции на которой отвалилось копирование. Сейчас буду пробовать ее скопировать +\- коллекции по списку. Вариант, если скопировать не удасться то просто ее грохну.
AstraSerg
Andrey >... то просто ее грохну Всю коллекцию?!
Andrey
да. Там данные телеметрии.
Andrey
разворачиваете standalone 4.0, останавливаете запись в tokumx, запускаете mongodump, ждёте завершения, делаете mongorestore
а подскажите, монгодамп\монгоресторе можно запустить для одной базы в инстансе?
Andrey
https://docs.mongodb.com/manual/reference/program/mongodump/#cmdoption-mongodump-db
боюсь, что это не поможет, т.к. дамп из току не ресторится в монгу. Тестировали на монга3. с монга 4 не знаю как будет
Andrey
Сейчас уже не подскажу. Лично не делал
Andrey
Добрый день. Не подскажите команды rs.add(name) достаточно чтобы вернуть ноду в репликасет или есть какие-то нюансы?
Constantin
Смотря что вы хотите сделать
yopp
у неё уже должен быть конфиг кластера локально и при запуске она попытается самостоятельно подключится к кластеру