Ilya
просто сделайте obj.pop('_id') и работайте дальше или =)
Ilya
хз
Andru
Приветы. Хочу паджинацию сделать. Мне надо пагинировать массив, который я изначально получаю не через find, а через populate? И во вьюху уходит объект game, а пагинировать надо game.items?
Nick
skip-limit
Nick
или покажите как сейчас делается выборка
Andru
Ну это если find.skip/find.limit
Nick
давай вашу текущую выборку в студию, там мож чего и посоветуем
Nick
а не надо, это монгус фича. придется делат ьв приложухе пагинацию
Andru
Да это node.js + mongoose. Меня сюда отправили из нодежс чата
Nick
либо делаете в приложухе руками, либо делаете кастомный запрос и ручками собираете данные вместо populate
Nick
в ошдем случае берете aggregate там find -> lookup -> unwind > skip -> limit либо по типу слайса чтонить
Nick
нагуглилось такое https://gist.github.com/sdgluck/ce8f9b8b9d64c9e25a1e71d53a5ba128
Nick
за то что там написано не ручаюсь, на вид используется чтото вменяемое. но придется почитать доки к стеджам aggregate в монге
Andru
спасибо! нагуглил что-то похожее на SO, позже буду пробовать. Еще раз спасибо
Anonymous
Read-only на сутки. В следующий раз перманентный бан. В этой группе можно задавать любые вопросы по теме.
Вы уверены, что это правильная позиция? В группе 800 человек и, думаю, не все разделяют идею "любых вопросов", особенно тех, которые гуглятся
yopp
Эта группа создана для помощи. Посылать в Гугл — не помощь.
Amir
Репрессии ?)
Nick
ну вы же так же пришли сюда с вопросм, который разрешается через тикет на гите
Anonymous
Эта группа создана для помощи. Посылать в Гугл — не помощь.
побольше бы таких людей, как вы. спасибо!
Nikita
Ребята, подскажите, пожалуйста. C Mongoose если изменил схему, то при вызове Model.update она не обновляется? А то я добавил таймштампы, а их нет в коллекциях
Nick
Так а кто за вас значения добавит? Можете в схеме указать дефолтнок зна,ение, но в базе появится только после апдейта дока с новыми значеничми
Nikita
Так а кто за вас значения добавит? Можете в схеме указать дефолтнок зна,ение, но в базе появится только после апдейта дока с новыми значеничми
А там апдейтер стоит в кроне, по идее. Я так и не понял почему это произошло, но там почему-то ENV переменная с названием базы не проставилась и всё писалось в базу undefined ^\
Nick
Не понял проблему
Nikita
Не понял проблему
Теперь её нет :) Не в ту коллекцию писалось.
redbeard
здрасьте, товарищи! а насколько хороша монга для хранения большого кол-ва чатов и сообщений в них? применял ли ее кто-то в этом случае?
Nick
А много это сколько?
redbeard
кол-во юзеров исчисляется несколькими сотнями тысяч, пишет,ну, допустим, мессаг 100 в день, возможно, больше
Nick
Т.е. Планируете уже с чего смигрироваиь? Или новое делаете и такие граедмозные планы?
redbeard
нет, с нуля, пока все только на бумаге
Nick
Для начала норм, потом нсли что на чтото другое перенесете, если вдруг действительно много данных будет. Заодно уже определите свли потребности и может чтоио получше под ваш случай подберете
Nick
Условно пока данные будут помещаться в память все будет нопм
redbeard
то есть, имеет смысл брать тазики с большим кол-вом рамы?
Nick
Т.е надо начать делать и получать данные, когда вы точно опрелите круг задач и форматы данных и наберетесь тпыта эксплуатации монги, то уже сможете скорректировать ваши хранилища
Nick
Много памяти хорошо когда железо свое, еслм аренда то лишние траты
redbeard
то есть, иначе, монга под эти задачи, в принципе, годится, нужно будет только подтюнить?
Nick
Да
Nick
Готовьтесь только заранее что скорее всего через некоторое время вам придется пересматривать структуру данных, если захотите шардирование, либо сразу на это закладывайиесь.
redbeard
да, скорее всего, валить будет много. спасиба :)
george
Всем привет. Столкнулся с проблемой update. Кейс: Нужно найти документы по определенному признаку и в найденных записать 0 в предпоследнее значение массива, который является одним из полей. Теоретически, должно быть что-то типа вот такого: db.items.update({%условия поиска%}, { $set : { "array.-2" : 0}}) , но там не работает обращение по негативному индексу, как, например в position. В общем перепробовал уже кучу вариантов, но чет не нахожу решения.
yopp
Основное свойство чатов: короткое время актуальности. Через сутки, сообщение скорее всего больше никогда не будет повторно прочитано.
yopp
Вам надо будет хранить очень много данных, очень и очень дёшево. И совсем ничтожную часть данных держать горячей
yopp
В монге вы хорошо сможете это решить шардированием, но придётся немного повозиться. Если нужно потом делать аналитику, то сложнее. Но тоже решаемо.
agic
вопрос не по монго ну может кто знает
agic
find({ "answer.0.results.0.to" : "tatata", date: {$gte: ISODate("2018-05-28T18:22:58Z")}}) такой вот запрос в монго вполне рабочий `my $now = DateTime->now; my $n_minutes_ago = $now->add( minutes => -3 ); my $then = DateTime->now( time_zone => 'Europe/Moscow' )->truncate( to => 'minute' )->add( minutes => -3 ); my $cnt = $users->find({ "answer.0.results.0.to" => $arg1, "date" => {'$gte' => $then}});` может кто увидит где я с датами накосячил ( 2018-05-28T18:47:00 print then а он выводит все что есть по запросу как будто игнорируя gte
Nick
используйте 3 обратных апострофа или как они называются
agic
поясните
brammator
копируя сюда многострочный код лучше использовать три обратных апострофа ` ` ` текст текст ` ` ` вот так (только между апострофами пробелов не должно быть)
brammator
иначе парсер телеграмма может корёжить код как ему вздумается
agic
я уже всю голову поломал
agic
и пробывал и тройные кавычки и экранирование, и экранирование экранирование
brammator
если "тгдесктоп" это официальный, то всегда умел
Anonymous
Ребят почему может не работать index({ createdAt: 1 }, { expires: '1m' });
Anonymous
timestamps: true, оно же в нужном формате создается
Anonymous
я там форматами дат нигде не управляю
Nick
"timestamps: true" это кто делает?
Nick
точнее опция к чему
Anonymous
mongoose
Anonymous
к схеме
Anonymous
const RegSchema = Schema( { username: { type: String, required: true, unique: true, }, contacts: { type: String, required: true, }, status: { type: String, enum: ['awaiting', 'rejected', 'approved'], default: 'awaiting', required: true, }, }, { timestamps: true }, ); RegSchema.index({ createdAt: 1 }, { expires: '1m' });
Nick
а ьеперь залезте в базу и гляньте в каком виде там
Anonymous
в ISO, вроде так и должно быть
Anonymous
{ "_id" : ObjectId("5b0c417cfca6fd103435381a"), "status" : "awaiting", "username" : "кккккккккккккккк", "contacts" : "кккккккккккккккк", "createdAt" : ISODate("2018-05-28T17:50:52.793Z"), "updatedAt" : ISODate("2018-05-28T17:50:52.793Z"), "__v" : 0 }
Andrew
Ребят, есть тут кто юзает mlab? У меня только что БД упала, локально и на хостинге. Может, Кто знает в чем трабла ( может там обновление какое или еще что ). Код на хостинге не трогал, т.е. проблема в млаб
Anonymous
да, но я пробовал по разному и 3600
Nick
3600 - эквивалент часу
Nick
там ж секунды
Anonymous
это я потом уже понял, 60 тоже пробовал
Anonymous
дело не в этом мне кажется
Nick
а индекс пересоздавали?
Nick
советую сейчас првоерит ькакие нидексы созданы в базе
Anonymous
у меня для сессий connect-mongo тоже задает expires, так вот для сессия в базе появляется поле expire, а тут его нет
Anonymous
дропал и создавал по новой раз 10)
Anonymous
{ "v" : 2, "key" : { "createdAt" : 1 }, "name" : "createdAt_1", "ns" : "db.regs", "expireAfterSeconds" : 60, "background" : true }
Nick
вроде выглядит верно, а время на сервере в какой таймзоне?