Ilya
хз в моем случае запрос с полным указанием даты работает корректно {created: ISODate('2022-10-14T06:49:50.494+00:00')}
Mike
(MongoDB 6.0.1 Community)
Ilya
у меня 5
Dmitry
У меня 6+ стоит и всё работает
Dmitry
Alexandrr
обычный
первый раз о типе данных "обычный" узнаю 🤣
Mike
первый раз о типе данных "обычный" узнаю 🤣
)) я отписался в контексте чего я это имел ввиду
Alexandrr
Такой вопрос: Если я хочу вытащить дату с вот таким значением: {_date:"2007-03-13T19:46:00.000+00:00"} какой командой это необходимо сделать допустим в компас консоли: (ну и не только в ней)
для этого лучше форматирование использовать, как написали выше если что-то не понятно, можно открыть документацию и там подробно прочитать
Mike
то как я отписывался ранее это не работает
Dmitry
Но у меня работает
Alexandrr
на счет форматирования не понял если имеется ввиду следующее:
нужно читать документацию ISODate - это форматирование выходных данных, так как время в монге лежит в unix-формате (из предыдущего скрина видно)
Mike
только что то ищет оно долго - неск сек
Mike
вроде бы как по индексу все сделано
Mike
наверное тайм серии нужны что бы быстрее было
Mike
индексация поля нужна
так там же указано не date а _date - разве это не дает индексацию?
Dmitry
Надо ручками создавать index и прописывать условия для него
Mike
Нет
если речь о другом поле с индексом то он же тоже есть: _id
Dmitry
_id в mongo это индекс по умолчанию
Dmitry
Он создается когда создается коллекция
Dmitry
Всё остальные индексы надо создавать ручками
Mike
_id в mongo это индекс по умолчанию
это не индекс по умолчанию у меня - я его сам руками прописываю
Dmitry
это не индекс по умолчанию у меня - я его сам руками прописываю
Вот коллекцию создал, он автоматически создался
Mike
автоматически он не напишет - 1,2,3 в индексе(как это у меня сделано)
Dmitry
Потому, что авторы не рекомендуют его менять + в него timestamp защит
Mike
автоматом там какой то тупой хеш
Dmitry
Не тупой хэш, а всё продумано т.к. обычные id 1,2,3, ... палят количество записей, а этот не палит и если с самого начала не делал createdAt, то можно узнать т.к. он состоит из двух частей и вроде бы вторая часть это timestamp
Dmitry
Но не суть важно, что и как там работает. Чтобы у тебя _date индексировался, надо создать индекс
Mike
+ думал дата с нижним подчеркиванием тоже будет работать как индекс
Alexandrr
автоматом там какой то тупой хеш
зато вы умный, доку для начала нужно открыть
Mike
помоему в доке же написано что если ты нижнее подчеркивание указываеш то это означает индекс
Mike
(если мне память не изменяет)
Alexandrr
Dmitry
Для каждого поля или группы полей надо создавать индекс (причем для группы надо ещё правильный порядок выставлять), но для всего подряд не надо индексы создавать т.к. это только ухудшит обстановку.
Dmitry
помоему в доке же написано что если ты нижнее подчеркивание указываеш то это означает индекс
Вот вы compass используйте. Там в каждой коллекции написано количество индексов и есть список этих индексов. Монга оперирует только ими и не более.
Mike
на этом изображении по этой логике создан индекс?
Dmitry
У вас только 1 индекс и он по _id
Mike
ну значит он создан следовательно
Dmitry
Да и он один
Mike
(дата получается не создалась)
Dmitry
А с чего она должна создаться?
Dmitry
Это надо прописывать ручками
Mike
я давно проходил курс по монге - видимо забыл правила создания индекса
Dmitry
Самый лучший курс, это документация
Dmitry
Но не всегда
Mike
А с чего она должна создаться?
если я дату хочу сделать индексом - как я это должен прописать?
Dmitry
если я дату хочу сделать индексом - как я это должен прописать?
Можете так заполнить и всё, только за место updatedAt выберите своё поле
Dmitry
-1 или 1 это не важно т.к. mongo в обе стороны бегает
Dmitry
Это важно только в составных индексах
Mike
Можете так заполнить и всё, только за место updatedAt выберите своё поле
дело в том что в моем случае дату я же создаю во время парсинга - руками выставлять какие то фичи в компасе - не покатит
Mike
Mike
(момент создания даты)
Dmitry
И?
Mike
И?
мне необходимо понять что в текущем конфиге кода надо изменить что бы дата стала индексом
Dmitry
Через комас создай индекс и забудь
Dmitry
Можете так заполнить и всё, только за место updatedAt выберите своё поле
Вызови такое окошко, выбери _date и поставь -1 или 1
Mike
Через комас создай индекс и забудь
не катит т.к. документов таких целая туча будет генериться
Dmitry
И чё дальше?
Dmitry
Монга дальше сама разберётся и выставит у себя их правильно
Mike
И чё дальше?
не буду же я везде заходить в каждую колекцию и ручками там что то шаманить
Mike
таких коллекций будет тысяча
Mike
или больше
Dmitry
.db('название БД').collection('Название коллекции').createIndex({_date: -1})
Dmitry
Вроде так
Дима
Туплю, если есть объект типу user_data: { balance: 132, date: 10002 } как ещё одну строчку добавить в него например строку test с значением 0? Пробую через $set весь объект стирается и остаётся в нём test: 0
Dmitry
Но не уверен
Дима
Да, спасибо, тупил)
Евгений
можете подсказать, я создаю todo, и сохраняю id user в нем, теперь когда я получаю user-а мне нужно чтоб у него был массив todo которые он создал, как можно это сделать, спасибо заранее.
Евгений