Alexander
всем привет,
Есть модель, содержащая одним из филдов объект (key/value).
Напомните, плиз, как монгусу сказать чтобы искал по значениям этого объекта?
{
'1231e1nj1ekb3khb2hj': 'abc',
'23kj4h23kjhk2jh423kjj': 'bcd'
}
Sardor
Alexander
Sardor
а как тогда запрос будет выглядеть?
Не работал с монгузом, вот для самой монги пример (если я правильно понял задачу):
db.collection('coll').find({'поиск'}).toArray()
.then((src) => {
....
Object.values(src[0])
})
Alexander
倫太郎
Alexander
倫太郎
у монгуза строгая схема, или не строгая, но тогда теряется смысл монгуза
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
да, обычно в требованиях просто наличие высшего. Техническое или нет - это уже хотелки нач отдела. Я редко где видел именно профильное высшее образование
yopp
SvPupok
😹
Леш, я смотрю тебе тоже понравилось?
Anonymous
Подскажите пожалуйста, использую монгус, и, кажется, что-то не так делаю
ItemSchema.pre('save', function (next){
this.slug = slugify(this.name);
next()
})
Мне казалось это так работает, но не работает, поле не добавляется. Посоветуйте пожалуйста, как это правильно сделать?
slugify - это вот этот модуль. Может быть он отрабатывает асинхронно и это нужно учесть?
倫太郎
Anonymous
倫太郎
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}}
])
Почему ошибка?
Yurii
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}}
])
Почему ошибка?
кажется, тебе надо это
timezone: {$literal: "Europe/Moscow"}
Max
привет! насколько адекватна идея вместо object id юзать кастомную строку?
Max
при условии что строка гарантировано будет уникальной
Max
https://www.npmjs.com/package/shortid
Max
могу конечно запилить это отдельным полем и повесить индекс, но имхо - это не очень хорошая идея
Nick
Надо исходить из вопроса зачем вам вообще ид и что вы с ним делаете?
Oleg
Nick
Yurii
Max
Max
у меня createdAt
Max
- updatedAt
yopp
Есть около монговский вопрос, но скорее про алгоритмы устройства внутри:
MongoDB использует Raft или что-то похожее для того, чтобы организовать репликацию oplog на все машины, а также выбирать нового Primary, в случае, если первый упадет.
Когда мы добавляем нового Secondary на него реплицируется состояние Primary, но у меня вопрос, как именно? Oplog конечен, как capped collection он перезаписывается. Как выпавший надолго Secondary, или вновь подключенный узнает о всех изменениях, которые произошли на Primary, включая те, которые в oplog уже были перетерты.
состояние когда нода выпала за оплог разрешается с помощью inital sync. это просто копирование данных и последующее накатывание на них оплога
Yurii
+по если тебе надо делать skip с большим количеством объектов, то это будет медленно, если не делать через find({_id>val})
Yurii
yopp
yopp
заведите отдельное поле, пишите туда какойнибудь цифровой код
Max
то есть +1 поля в коллекции с индексом
Max
ок, спасибо, согласен
Oleg
@yurii_chikhrai что не так?
Max
yopp
зачем?
Max
зачем?
ну что бы однозначно идентифицировать сущность не использую других полей
Yurii
Max
Oleg
Yurii
3.2.19
а работаешь по этой документации, верно?
yopp
Nick
@dd_bb обнови в пине версию монги 4.0.3
Oleg
Max
Yurii
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
Oleg
А что может быть плохого, если с 3.2 обновиться до 3.6?
Oleg
Yurii
Спасибо, Юра!
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/ вот, надо featureCompatibilityVersion обновить
yopp
для серча
в целом, эти все номера — дурацкая затея
Max
Max
бизнес логику я описал выше - вполне адекватная
yopp
правильно не требовать от пользователя тренировать память :)
yopp
не знаю что у вас там за поездки, но обычно самая классическая проблема: сел телефон. скорее всего вместе с подтверждением. а я хочу через телефонную поддержку изменить место откуда меня забрать
yopp
вообще, мне кажется что начать стоит с разговоров со службой поддержки, узнав как у них вообще это происходит. если службы поддержки нет, то вообще не тратить на эту фигню время. убедится что пользователей можно искать по имейлу или номеру телефона и что поддержке будут видны поездки
yopp