yopp
Забейте. Сделайте индекс и по нему covered query
yopp
500 документов в день это меньше 200к в год
yopp
Потом выборка по всей коллекции может обойтись и metadata collection size
yopp
Это очень дёшево, пусть и не идеально точно
yopp
Для пагинации — пофиг. Округлите до сотни и все
Dmitry
yopp
Covered query это когда запрос удовлетворяется чтением только индекса. В projection запроса должны быть включены только поля из индекса и выключён _id
Dmitry
сейчас я просто добавил второй запрос countDocuments({})
Dmitry
yopp
Но если у вас по всей коллекции выборка, то https://docs.mongodb.com/manual/reference/method/db.collection.estimatedDocumentCount/#db.collection.estimatedDocumentCount
yopp
yopp
Но без условия это смысла особо не имеет. Вообще при таком количестве документов не надо запариваться
yopp
Сделайте как делается быстрее, в добавьте алерт на запрос в мониторинг, когда он будет около 150мс документы считать и живите спокойно
Dmitry
Ну да, у меня просто запрос «все документы»
Dmitry
Ок, спасибо
Mazzara
всем привет, может кто знает как в pymongo перенести документ с одной коллекции в другую и плюс update его и $set пару новых ключей?
Mazzara
я понимаю что можно просто удалить из одной коллекции и добавить новый документ в другую коллекцию с такими же ключами и значениями но есть ли более изящный способ?
Nick
Можно обойтись и без транзакции если допустимо иметь одинаковый док в обеих коллекциях и есть способы это зпдетектить и произвести повторное удаление
Nick
Оут не перемещает доки, а кладет результат в коллекцию
Mazzara
Николай
https://t.me/data_meetups_moscow/47
yopp
и плюс out целиком коллекцию заменяет (всё ещё):
https://docs.mongodb.com/manual/reference/operator/aggregation/out/#replace-existing-collection
yopp
https://t.me/data_meetups_moscow/47
Да, это Scalability Camp митап в Москве, на котором 6 июня я буду делать доклад «От мегабайт до петабайт не расплескав смузи».
Места начинают заканчиваться, регистрируйтесь если планируете туда пойти!
yopp
А мастер-класс «Практическая схемотехника» уже послезаватра.
Приходите, я буду на примерах рассказывать о популярных паттернах проектирования документов, о том когда стоит и не стоит их применять и почему.
Плюс появилась возможность оплатить билет наличными на месте (за одно и проверим новый налоговоый режим). Билет может оплатить и ваша компания, просто выберите оплату для юрлица — сформируйтеся счёт и все необходимые документы. Потеребите ваше руководство, это отличный способ за один день сильно прокачаться!
Билеты тут: https://db-ai.timepad.ru/event/980574/
Daniil
yopp
И монга разыгрывает уже 4 000$: https://mdbwchallengeweek4.splashthat.com
Daniil
yopp
а записи не будет?
В этот раз нет. Не так-то просто найти тех, кто сделает нормальную запись и трансляцию :(
Daniil
Жаль (
Daniil
yopp
Она как буффер, её под нож если что можно пустить. Там много не расскажешь :)
Ruslan
Всем привет! Может кто сталкивался с проблемой:
http://prntscr.com/nsaw6i фильтр не хочет залазить внутрь объекта.
Константин
Добрый день. В базу не записывается кириллица, в чём дело? Справа то, что приходит на сервер.
yopp
yopp
Yurii
Ребята, вопрос по mongoose
есть такая схема
data: {
type: ObjectId,
refPath: 'onTest'
},
onTest: {
type: String,
enum: ['OneTest', 'SecondTest']
},Внимание вопрос, можно ли делать апдейт внутренних коллекций?
Yurii
что то вроде
const test = TestModel.find()
test.data.somefield = 'new'
test.save()
Nick
что значит "внутренних коллекций"?
Yurii
связные коллекции
Yurii
@yatoba апдейт других коллекций которые есть в refPath
Nick
Не вкурсах, просто интересгая фраза была. Советую просто попробовать
Josh
"items" : [
{
"itemName" : "🖋Scroll of Engraving",
"qty" : "1"
},
{
"itemName" : "Metallic fiber",
"qty" : "1"
},
{
"itemName" : "Azure murky potion",
"qty" : "1"
}
]
ткните плз как строчкой вернуть: itemName: qty#...
yopp
yopp
но вообще лучше на клиенте это делать
Josh
это разово, просто для конвертации челику под его "формат", спасибо
Josh
Josh
Josh
все в одну строчку: 🖋Scroll of Engraving 1#Metallic fiber 1#Azure murky potion 1
Josh
не бейте, такой формат, сам в шоке
yopp
можно прямо одним reduce и обойтись
Josh
ой точно, спасибо
yopp
да, внутри $concat
Josh
Т.к. значения массива объекты, то нужен еще вложенный конкат, че-т не выходит пока
Josh
Josh
Убрать бы # изначально
yopp
В конец поставь
yopp
или я что-то пропустил?
Igor
Коллеги, помогите пожалуйста, не получается задать ttl для документа, документ удаляется в течении минуты несмотря на то, какую бы я не поставил дату в expireAfterSeconds
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const EmailSchema = new Schema({
email: {
type: String,
required: true
},
hash: {
type: String,
required: true
},
createdAt: {
type: Date
}
});
EmailSchema.index( { "createdAt": 1 }, { expireAfterSeconds: 120 } );
module.exports = mongoose.model('Email', EmailSchema);
в принципе пробовал и разными путями, ничего не помогает
разве что сработало для меня - плагин mongoose-ttl, но мне так же нужно удалять по условию, да и в принципе хочется разобраться почему не работает
Josh
или я что-то пропустил?
ага, надо чтобы только между ними была вставка, в принципе человека устроил результат уже, но задача до конца не решена
Josh
Коллеги, помогите пожалуйста, не получается задать ttl для документа, документ удаляется в течении минуты несмотря на то, какую бы я не поставил дату в expireAfterSeconds
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const EmailSchema = new Schema({
email: {
type: String,
required: true
},
hash: {
type: String,
required: true
},
createdAt: {
type: Date
}
});
EmailSchema.index( { "createdAt": 1 }, { expireAfterSeconds: 120 } );
module.exports = mongoose.model('Email', EmailSchema);
в принципе пробовал и разными путями, ничего не помогает
разве что сработало для меня - плагин mongoose-ttl, но мне так же нужно удалять по условию, да и в принципе хочется разобраться почему не работает
индекс уже задался и не меняется, наверное? пересоздай коллецию/отредактируй? Если что из меня плохой советчик, но навскидку проблема в этом
Nick
Коллеги, помогите пожалуйста, не получается задать ttl для документа, документ удаляется в течении минуты несмотря на то, какую бы я не поставил дату в expireAfterSeconds
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const EmailSchema = new Schema({
email: {
type: String,
required: true
},
hash: {
type: String,
required: true
},
createdAt: {
type: Date
}
});
EmailSchema.index( { "createdAt": 1 }, { expireAfterSeconds: 120 } );
module.exports = mongoose.model('Email', EmailSchema);
в принципе пробовал и разными путями, ничего не помогает
разве что сработало для меня - плагин mongoose-ttl, но мне так же нужно удалять по условию, да и в принципе хочется разобраться почему не работает
проверьте время на клиенте на серваке с базой, скорее всего вы вставляете уже протухшие даные по мнению сервиса
Nick
так же это может быть изза часовых поясов
Boris
Коллеги, добрый день. Подскажите плз, такая проблема: поднят реплика сет из трех монг, и был сделан бэкап с помощью mongodump - но без флага --oplog и без указания идентификатора сета, т.е. фактически дамп с одной ноды. Можно ли его каким-то образом через mongorestore восстановить? Сейчас все попытки заканчиваются тем, что кластер через какое-то время отторгает новые данные
yopp
Коллеги, помогите пожалуйста, не получается задать ttl для документа, документ удаляется в течении минуты несмотря на то, какую бы я не поставил дату в expireAfterSeconds
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const EmailSchema = new Schema({
email: {
type: String,
required: true
},
hash: {
type: String,
required: true
},
createdAt: {
type: Date
}
});
EmailSchema.index( { "createdAt": 1 }, { expireAfterSeconds: 120 } );
module.exports = mongoose.model('Email', EmailSchema);
в принципе пробовал и разными путями, ничего не помогает
разве что сработало для меня - плагин mongoose-ttl, но мне так же нужно удалять по условию, да и в принципе хочется разобраться почему не работает
Соглашусь с @letitcode, 97% что проблема в том что при обновлении параметра в коде индекс не пересоздается и используется значение которое было указано когда индекс создался
https://docs.mongodb.com/manual/reference/method/db.collection.dropIndex/ и по новой попробуйте
Igor
угу спасибо, вечером попробую, отпишусь с фидбэком :)
yopp
Напомню что «Практическая схемотехника» уже завтра. Приходите и узнайте на практических примерах как проектировать документы: https://db-ai.timepad.ru/event/980574/
На Scalability Meetup #9, который пройдёт 6 июня, осталось всего 12 мест. Приходите послушать о том, какие инструменты для масштабирования есть в монге: https://www.meetup.com/Scalability-Camp/events/261525352/
Началась 4 неделя MongoDB Weekly Challange, главный приз на этой неделе $4,000: https://mdbwchallengeweek4.splashthat.com
yopp
Josh
я правда поискал в гугле и тут, простите заранее, но...
как задать Boolean, чтобы по дефолту false писал? Ну или как по false искать документы?
Josh