Vladislav
Кстати, а кто-нибудь помнит, $elemMatch в find-запросах может учитывать индексы?
yopp
Динамические имена ключей это очень не эффективно
yopp
С точки зрения индексации
Vladislav
ну они уж не настолько и динамически изменяемые. Спросил больше из-за интереса. Просто был уверен, что вайлдкардами это можно решить))
vveare138
гайз, а подскажите вот что: есть документ в котором есть поле типа array<object>
vveare138
и нужно написать такой projection который вернет документ, но исключит элементы из массива по некоторому условию
vveare138
благодарю
Dmitry
/report
madspectator
Подскажите, если я хочу создать partial index, причём условие сразу ставится на первое поле в индексе, то что мне указывать в "основном" поле? Ну т.е. db.collection.createIndex({foo}, {partialFilterExpression: ...}), что дожно быть в {foo}?
madspectator
Просто {}?
madspectator
Читал. Не нашёл ответа.
madspectator
Мне нужно индекс на одно поле, причём только если оно имеет значение true.
madspectator
Как буде выглядеть запрос создания индекса?
Daniil
Как буде выглядеть запрос создания индекса?
В ссылке якорь на нужный вам абзац, посмотрите пример
madspectator
Там нет примера для случая, который я описал.
Daniil
db.contacts.createIndex( { name: 1 }, { partialFilterExpression: { name: { $exists: true } } } )
Daniil
Вот пример из этого абзаца
madspectator
Это не мой случай.
Daniil
db.contacts.createIndex( { name: 1 }, { partialFilterExpression: { name: true } } )
Daniil
Не ваш случай по прежнему?
madspectator
А, хм.
madspectator
Всё, понял, спасибо.
madspectator
А можно так сделать? createIndex({foo: 1, bar: 1}, partialIndexExpression: {foo: true}) Т.е. уточнение индекса по первому ключу, когда есть второй ключ. Потом запрос c сортировкой будет использвать этот индекс для поиска и сортировки? find({foo: true}).sort({bar: 1})
Paul
Привет Делаю бота и пытаюсь достать юзера из базы данных, но не получается Когда использовал db.User.findOne(), получалось взять юзера, но похоже берёт только верхнего из базы, а не того, кто обращается к боту Подскажите, пожалуйста, как это делается правильно
Konstantin
И название Фреймворка, который используется для написания бота
Paul
Код в студию!
Использую Telegraf, секунду
Konstantin
Хм, с телеграфом давно не работал. Я лично пишу на puregram
Daniil
Вы ничего не передаёте в качестве параметров запроса
Daniil
db.User.findOne({ email: “email” }) например
Daniil
https://docs.mongodb.com
Daniil
Рекомендую изучить, дока основная небольшая
Daniil
Чтобы не было проблем с написанием хотя бы элементарных crud запросов
Paul
Код в студию!
Вот так примерно const CronJob = require('cron').CronJob; const job = new CronJob('*/5 * * * * *', async function() { const user = await db.User.findOne(); await bot.telegram.sendMessage(user.chat_id, 'Hello World'); }) bot.command('launch', async (ctx) => { job.start() }) bot.command('stop', async (ctx) => { job.stop(); })
Konstantin
id: message.from.id
Konstantin
Или что там внутри
Paul
@d_lebedinsky @superman_da спасибо, поизучаю
Paul
id: message.from.id
Выдаёт ошибку и просит ctx, только не знаю, как его взять, потому что юзер напрямую не обращается, только при запуске скрипта const user = await db.User.findOne({chat_id: ctx.chat.id}); await bot.telegram.sendMessage(user.chat_id, 'Hello World');
Konstantin
а, да
Konstantin
в telegraf же ctx
T.A
добрый день. создаю несколько документов с помощью метода insertMany. документы создаются, но без индексов. одм mongoose
T.A
T.A
вообще они должны при инсэрте создаваться?
Daniil
вообще они должны при инсэрте создаваться?
Если нужный вам индекс создан, то новые документы автоматически будут проиндексированы
Daniil
Это две не связанные между собой операции - создание индекса и вставка документов
T.A
Это две не связанные между собой операции - создание индекса и вставка документов
а тогда в какой момент монгус создаст индексы указанные в схеме?
Daniil
Но если они уже созданы, то они никуда не денутся
T.A
Каждый раз при запуске пробует создать
ему нужно как-то скормить схему? а то он не создаёт. перед инсэртом перезагружал приложение
Daniil
Как вы создаёте индекс?
T.A
и эта модель в основном будет запрашиваться в таком виде. как мне лучше объявить индексы для максимальной производительности? отдельно или compound?
T.A
Как вы создаёте индекс?
просто указываю в схеме
T.A
просто указываю в схеме
объявить так или отдельно?
T.A
объявить так или отдельно?
@dd_bb можете помочь пожалуйста с советом?
T.A
объявить так или отдельно?
так тоже не создаются(
yopp
@dd_bb можете помочь пожалуйста с советом?
https://mongoosejs.com/docs/api.html#model_Model.ensureIndexes
yopp
Судя по https://mongoosejs.com/docs/guide.html#indexes У вас может быть autoaindexes в false установлен
T.A
Судя по https://mongoosejs.com/docs/guide.html#indexes У вас может быть autoaindexes в false установлен
значит в продакшене нужно это выключить и создать индексы вручную через консоль монги?
yopp
В продакшене создание индексов это отдельная проблема
yopp
Если для разработки, то убедиться что у вас включён autoIndex
yopp
Я не разбираюсь в монгусе, к сожалению
yopp
а что скажете насчёт этого?
Вам нужен индекс по cardNumber: -1/1, date: -1
T.A
yopp
Порядок cardNumber особой роли не играет, если вы сортировать не будете по нему
yopp
Отдельно смысла нет
yopp
Пересечение индексов это дорогая операция, дороже чем просто проехаться по индексу
T.A
Пересечение индексов это дорогая операция, дороже чем просто проехаться по индексу
а скажется ли это когда буду запрашивать отдельно? например только по номеру карты или же только сортировка по дате допустим
yopp
По номеру карты не скажется, номер карты это префикс
yopp
По дате скажется, это постфикс