Anonymous
Народ, а как в монге обстоят дела с хранением и обходом графов? Насколько NoSQL подход годится\ для таких задач?
Igor
Подскажите, есть запрос db.user.find({"age": {$gte: 20, $lte: 25}}), как построить подобный запрос так, что бы выборка была по age между 20-25 и включала в себя еще значения 30.
Igor
что-то типа db.user.find({"age": {$gte: 20, $lte: 25, $and: 30}})
Ilya
db.user.find( { $or: [ {"age": {$gte: 20, $lte: 25}}, {"age": 30}] } )
Ilya
так попробуйте
Igor
Спасибо, попробую
Serhii
Есть такая вот агрегация https://paste.ofcode.org/NYpKPXtzfzPggnCQAhvBW2 и есть проблемка, если какой то колекции нету в бд, бд валится и не запускается. Может кто знает как пофиксить?
Serhii
вот лог https://paste.ofcode.org/32KPUYwwa3BgBMmCDdXvhQg
Sergey
Есть два писателя, оба делают majority write. Первый еще висит в операции insert, но запись в primary де-факто уже случилась. Второй приходит в primary, получает duplicate violation и уходит довольный, считая, что документ уже есть. После этого primary падает, документ идет на rollback, что ОК, т.к. первый читатель никогда не получал ack на вставку. А вот второй, несмотря на majority, получил отлуп на не durable данных. В этих рассуждениях есть ошибка? Знает ли кто-нибудь причину, почему так не произойдет?
Anonymous
UnhandledPromiseRejectionWarning: CastError: Cast to ObjectId failed for value "5bd9657b1352e31d04360bb" at path "_id" for model "storage"
Anonymous
async getById(Id){ return await Storage.findById(Id) }
Anonymous
что делать?
倫太郎
async getById(Id){ return await Storage.findById(Id) }
Так а зачем тебе там await?
倫太郎
+ если монгуз то надо после запроса .exec() делать
Nick
async getById(Id){ return await Storage.findById(Id) }
у вас Id неправильного типа, сделайте ObjectId из строки
Sergey
Хороший вопрос. Второй клиент не уйдёт с отлупом, пока первый не получит ack. Потому что majority потребует подтверждения со большинства нод, а его не будет, потому что изменение ещё не реплицировалось.
Правильно ли я понимаю, что для этого потребуется, чтобы второй запрос, прежде чем пойдёт в индекс, дождался majority для текущей версии данных?
yopp
Для времени кластера, да.
yopp
Интересный вопрос что будет в монге 3.4 до появления casual consistency.
yopp
Наверное так как описано. Второй получит отлуп на основании данных праймари
倫太郎
Зачем exec?
@ Открываем документацию @ Читаем
Serhii
@ Открываем документацию @ Читаем
я то доку читал, но вы так написали будто это обязательное действие
倫太郎
Ну вообще обязательное
Serhii
ну вообще нет
Serhii
на авш выбок, exec, callback или then
倫太郎
на авш выбок, exec, callback или then
https://mongoosejs.com/docs/promises.html#queries-are-not-promises
Serhii
https://mongoosejs.com/docs/promises.html#queries-are-not-promises
я гдето писал о промисах?
Serhii
Тут
там написано then, а не промисы
Serhii
А что такое then?
вот вы скинули ссылку, хотя бы взяли прочитали что там написано, а не позорились
倫太郎
Позоооор
Serhii
Почитали что такое then в контексте mongoose?
倫太郎
Ога
Serhii
так, на всякий случай https://monosnap.com/file/cM5BR5VpTTUoaEjKODBJL9NQN9HkSN
yopp
Позоооор
Попрошу без этого. Если есть какие-то конструктивные комментарии, пожалуйста. Если нет, попрошу оставить оценки при себе.
倫太郎
так, на всякий случай https://monosnap.com/file/cM5BR5VpTTUoaEjKODBJL9NQN9HkSN
А ты умеешь кидать скриншоты без сторонних сервисов?
倫太郎
Или это доступно только джедаям?
Serhii
Yurii
Или это доступно только джедаям?
как всегда, ты сама толерантность 😅 Не б человеку немного "мягче" объяснить, где он не прав?
倫太郎
Та я понял уже
倫太郎
Все равно везде пишу .exec()
Serhii
самое смешное, что хоть они и пишут что оно не работает с async/await но оно работает
Serhii
если exec юзать
倫太郎
Неа
倫太郎
Перечитай
Serhii
да хз, чето я запутался) в примере только так есть await MyModel.findOne({}).exec()
倫太郎
да хз, чето я запутался) в примере только так есть await MyModel.findOne({}).exec()
They have a .then() function for co and async/await as a convenience. If you need a fully-fledged promise, use the .exec() function.
Serhii
сорян, чето упустил это
Maksym
Привет народ. Кто использует C# MongoDriver, как вы инкапсулируете работу с монго? Делаете какой-то generic repository или напрямую юзаете, есть какой-то бест практис?
Viktor
в di зареган как опенгенерик
AstraSerg
Прям горжусь тобой, идешь к успеху) 😊
коллеги, уважайте друг друга! Даватйе без сарказма.
Yurii
коллеги, уважайте друг друга! Даватйе без сарказма.
да я ж с любовью, реально ж помог и нормально объяснил)
Maksym
генерик репо написан с ограничением на параметр типа
вот я тоже так сделал, а теперь вот смотрю и как-то по уродливому оно. И например если нужно сделать aggregation с двух коллекций, то репозитория не хватает. Плюс c сама IMongoCollection можно работать как с IQueryable и чета я не вижу вообще смысла в этом репозитории паттерне
Serhii
Может еще кто то с этим все таки поможет? Есть такая вот агрегация https://paste.ofcode.org/NYpKPXtzfzPggnCQAhvBW2 и есть проблемка, если какой то колекции нету в бд, бд валится и не запускается. Тестовым путем замечено что все это валит оператор $project в lookup pipeline. Может кто знает как пофиксить? вот лог https://paste.ofcode.org/32KPUYwwa3BgBMmCDdXvhQg
Serhii
вы можете перед выполнением запрсоа выяснить есть ли нужные коллекции https://docs.mongodb.com/manual/reference/command/listCollections/
забыл дописать. Точно такой же запрос с robomongo ни чего не крашит. Походу проблема или с драйвером или с mongoose
Maksym
смысл в том, что 95% задач он покрывает, для остальных 5 дописываешь уже конкретику
вот у меня есть сомнения что он 95% покрывает. Какие у тебя методы торчат в этом базовом репозитории?
yopp
какая версия монги?
Serhii
node - v10.5.0 mongodb - v3.1.8 mongoose - v5.3.8 mongo-server - v4.0.1
yopp
mongod --version
Serhii
mongodb нодовский драйвер, mongo-server то что shell выводит при старте
yopp
попробуйте сервер до 4.0.3 обновить
yopp
если проблема останется, то сделайте репозиторий на гитхабе, в который положите минимальное приложение которое роняет монгу и заведите тикет на https://jira.mongodb.org
AstraSerg
попробуйте сервер до 4.0.3 обновить
Если не поможет, можете репортить баг в монгу, ибо реально баг UPD одновременно написали :)
Serhii
чето мне кажется это больше баг mongodb драйвера или mongoose, так как с робомонго запрос проходит без проблем
Yurii
чето мне кажется это больше баг mongodb драйвера или mongoose, так как с робомонго запрос проходит без проблем
включи mongoose.set('debug', true); сделай запрос и посмотри, что вообще летит в монгу
Serhii
Да вродь ни чего критичного https://paste.ofcode.org/qQqTdeQVeCsR2jhpsSz4yK