Alexander
всем привет, Есть модель, содержащая одним из филдов объект (key/value). Напомните, плиз, как монгусу сказать чтобы искал по значениям этого объекта? { '1231e1nj1ekb3khb2hj': 'abc', '23kj4h23kjhk2jh423kjj': 'bcd' }
Sardor
а как тогда запрос будет выглядеть?
Не работал с монгузом, вот для самой монги пример (если я правильно понял задачу): db.collection('coll').find({'поиск'}).toArray() .then((src) => { .... Object.values(src[0]) })
Alexander
ват
чого не так? )
倫太郎
у монгуза строгая схема, или не строгая, но тогда теряется смысл монгуза
Alexander
нет
а что?
倫太郎
если тебе key/value нужна, тогда ебаш модель Map of Mixed
倫太郎
https://mongoosejs.com/docs/schematypes.html#maps
倫太郎
но лучше это к обьекту какому-либо привязать
Alexander
спасибо, ща придумаю что-нибудь
SvPupok
Камрады, никто не хочет попробовать себя?
SvPupok
https://m.hh.ru/vacancy/26228553
Yar
Требования: - Высшее техническое образование.
Yar
эм..
Constantin
Требования: - Высшее техническое образование.
Госсударственная организация, бывает что и на 15к рублей в месяц людей берут только с высшим образованием. Такие требования в каком-нибудь рабочем расписании, значит найм по нему и должен идти
Ilya
да, обычно в требованиях просто наличие высшего. Техническое или нет - это уже хотелки нач отдела. Я редко где видел именно профильное высшее образование
SvPupok
😹
Леш, я смотрю тебе тоже понравилось?
Anonymous
Подскажите пожалуйста, использую монгус, и, кажется, что-то не так делаю ItemSchema.pre('save', function (next){ this.slug = slugify(this.name); next() }) Мне казалось это так работает, но не работает, поле не добавляется. Посоветуйте пожалуйста, как это правильно сделать? slugify - это вот этот модуль. Может быть он отрабатывает асинхронно и это нужно учесть?
倫太郎
Ага
Точна?
Anonymous
Точна?
вот так: name: { type: String, required: true, minlength: 1, trim: true, }, slug: { type: String, index: true },
Constantin
Есть около монговский вопрос, но скорее про алгоритмы устройства внутри: MongoDB использует Raft или что-то похожее для того, чтобы организовать репликацию oplog на все машины, а также выбирать нового Primary, в случае, если первый упадет. Когда мы добавляем нового Secondary на него реплицируется состояние Primary, но у меня вопрос, как именно? Oplog конечен, как capped collection он перезаписывается. Как выпавший надолго Secondary, или вновь подключенный узнает о всех изменениях, которые произошли на Primary, включая те, которые в oplog уже были перетерты.
Oleg
db.getCollection('payments').aggregate([ { "$match": {status: 'paid'} }, { "$project": { "y": {"$year": "$created_at"}, "m": {"$month": "$created_at"}, "d": {"$dayOfMonth": { date: "$created_at", timezone: "Europe/Moscow" } }, "h": {"$hour": "$created_at"}, "amount": 1 } }, { "$group": { "_id": {"year": "$y", "month": "$m", "day": "$d"}, "total": {"$sum": "$amount"} } }, {$sort: {_id: -1}} ]) Почему ошибка?
Max
привет! насколько адекватна идея вместо object id юзать кастомную строку?
Max
при условии что строка гарантировано будет уникальной
Max
https://www.npmjs.com/package/shortid
Max
могу конечно запилить это отдельным полем и повесить индекс, но имхо - это не очень хорошая идея
Nick
Надо исходить из вопроса зачем вам вообще ид и что вы с ним делаете?
Yurii
привет! насколько адекватна идея вместо object id юзать кастомную строку?
лучше юзать ObjectId, так как это поле сразу индексированное, и можно делать по нему сортировку по умолчанию ({_id: -1}), что тебе даст 100% гарантию, что первый документ будет записанный последним
Max
Надо исходить из вопроса зачем вам вообще ид и что вы с ним делаете?
есть список поездок - айдишник нужно отображать юзеру в истории поездок. могут быть проблемы/вопросы - он тогда называет айдишник админу по телефону - и тот с админки ()самописной - делает над сущностью операции
Max
у меня createdAt
Max
- updatedAt
Yurii
+по если тебе надо делать skip с большим количеством объектов, то это будет медленно, если не делать через find({_id>val})
yopp
заведите отдельное поле, пишите туда какойнибудь цифровой код
Max
то есть +1 поля в коллекции с индексом
Max
ок, спасибо, согласен
Oleg
@yurii_chikhrai что не так?
yopp
ок, спасибо, согласен
более того, не обязательно чтоб этот код бы уникальным :)
yopp
зачем?
Max
зачем?
ну что бы однозначно идентифицировать сущность не использую других полей
Yurii
@yurii_chikhrai что не так?
а монга у тебя какая?
Max
зачем?
или я не прав?
Yurii
3.2.19
а работаешь по этой документации, верно?
Nick
@dd_bb обнови в пине версию монги 4.0.3
Max
зачем? :)
для серча
Yurii
а работаешь по этой документации, верно?
это для 3.6, в 3.2 другой синтаксис
Yurii
3.2.19
точнее там нет возможности передать таймзону
yopp
Stable: 4.0.3 (Oct 9, 2018) Bugfix: 3.6.8 (Sep 19, 2018), Legacy: 3.4.17 (Sep 7, 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf 4.0.3: https://docs.mongodb.com/manual/release-notes/4.0/#oct-9-2018 3.6.8: https://docs.mongodb.com/manual/release-notes/3.6/#sep-19-2018 3.4.17: https://docs.mongodb.com/manual/release-notes/3.4/#sep-7-2018 End of life: 3.2.21 (Sep 2018 / Sep 2018), 3.0.15 (May 2015 / Feb 2018)
Oleg
А что может быть плохого, если с 3.2 обновиться до 3.6?
Yurii
А что может быть плохого, если с 3.2 обновиться до 3.6?
посмотри мануал по миграции, там есть нюанс с конфигом, а так разницы не заметишь
Yurii
Спасибо, Юра!
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/ вот, надо featureCompatibilityVersion обновить
yopp
для серча
в целом, эти все номера — дурацкая затея
Max
бизнес логику я описал выше - вполне адекватная
yopp
правильно не требовать от пользователя тренировать память :)
yopp
не знаю что у вас там за поездки, но обычно самая классическая проблема: сел телефон. скорее всего вместе с подтверждением. а я хочу через телефонную поддержку изменить место откуда меня забрать
yopp
вообще, мне кажется что начать стоит с разговоров со службой поддержки, узнав как у них вообще это происходит. если службы поддержки нет, то вообще не тратить на эту фигню время. убедится что пользователей можно искать по имейлу или номеру телефона и что поддержке будут видны поездки
Constantin
состояние когда нода выпала за оплог разрешается с помощью inital sync. это просто копирование данных и последующее накатывание на них оплога
Спасибо! А можете подсказать где в документации почитать про механизм внутреннего устройства подробнее, событий которые возникают между праймари и секондари, и тем как решаются проблемы такого рода.