Морозов
теперь есть
Можете поделиться?
Nick
Можете поделиться?
db.getCollection('now_').update( { _id: ObjectId("621a5fe0f13c4f5a71e2e77f") }, [ { $set: { lastModified: "$$NOW"} } ] ) после обновления "lastModified" : ISODate("2022-02-26T17:38:35.755Z")
Nick
db.getCollection('now_').update( { _id: ObjectId("621a5fe0f13c4f5a71e2e77f") }, [ { $set: { lastModified: "$$NOW"} } ] ) после обновления "lastModified" : ISODate("2022-02-26T17:38:35.755Z")
аналогично с использованием $currentDate и обывчным апдейтом без агрегации db.getCollection('now_').update( { _id: ObjectId("621a5fe0f13c4f5a71e2e77f") }, { $currentDate: { lastModified: true } } ) и результатом "lastModified" : ISODate("2022-02-26T17:41:42.108Z")
Морозов
да
А можно как-то при создании новой записи автоматически добавлять время? https://docs.mongodb.com/manual/core/timeseries-collections/
Nick
А можно как-то при создании новой записи автоматически добавлять время? https://docs.mongodb.com/manual/core/timeseries-collections/
оно и так создается, с точки зрения монги это время в _id закладывается и занимает первые 4 байта. Видимо поэтому других инструментов не дали. А таймсериес коллекции оно спец задач
Nick
Я могу вручную расшифровать 4 байта?
да конечно, это обычный таймстемп, https://docs.mongodb.com/manual/reference/method/ObjectId/
Морозов
да конечно, это обычный таймстемп, https://docs.mongodb.com/manual/reference/method/ObjectId/
Тогда все понятно, Вы мне очень помогли. Спасибо огромное.
Nick
Тогда все понятно, Вы мне очень помогли. Спасибо огромное.
но не советую полагаться на все это, т.к. оно не предоставляет какие либо гарантии и тот же _id может проставляться как драйвером на стороне приложения, так и инстансом монги и время может между ними различаться и тогда вы можете получить ситуацию с работой со временем из будущего. Поэтому рекомендуется все что касается работ с датами делать в приложении и полностью контролировать эту часть
Морозов
зависит от того что делается
Я, например, хочу получить время, когда превышено значение датчика температуры.
Nick
а зачем апдейт тогда? это обычная выборка
Морозов
И время будет указано по запросу?
Nick
И время будет указано по запросу?
добавляю в базу данные по датчику: db.getCollection('now_').insert({ value: 100, sendorId: "a123", modifiedAt: new Date() }) несколько раз меняя value потом запрос на поулчение событий, где было превышение показания датчика свыше 50 db.getCollection('now_').find({value: {$gte: 50}})
Nick
где тут вы планировали работать со временем?
Nick
Спасибо. Это через консоль. Но в моем случае источник данных это arduino, которая добавляет данные в базу через post запрос. Как быть тогда?
Пост запрос же принимает наверняка вами написанный сервис и делает вставку в базу - тут вы проставляете время перед вставкой
Морозов
Пост запрос же принимает наверняка вами написанный сервис и делает вставку в базу - тут вы проставляете время перед вставкой
Это мне нужно часы реального времени покупать на I2C, а я не хочу. https://iarduino.ru/shop/Expansion-payments/chasy-realnogo-vremeni-ds3231.html?yclid=14138881753250791423
Askhat
Всем доброго времени суток. Подскажите пожалуйста какие нибудь книги, статьи (кроме официальной документации) где можно почитать про оконную функцию setWindowFields побольше, с примерами, желательно на русском
Морозов
Добрый день. Скажите, пожалуйста, больше одного кластера нельзя создать бесплатно?
Морозов
Artem B
Ребят, подскажите, как в монго сделать автозаполняемые поля? Пример: есть коллекция постов и коллекция пользователей. У пользователя есть массив с его постами. Как сделать так, чтобы список постов пользователя заполнялся автоматически (т.е. из коллекции постов выбирались только те, где автором является этот пользователь)?
Artem B
В монго $lookup, если используете монгус либу то там есть метод populate()
populate же нужен, чтобы заменять ссылки на документы, разве нет?
Nick
populate же нужен, чтобы заменять ссылки на документы, разве нет?
а вам разве не это надо? подтягивать значения из других коллекций - считай то же самое что резолвить ссылки
Artem B
а вам разве не это надо? подтягивать значения из других коллекций - считай то же самое что резолвить ссылки
я как раз не понимаю, как сделать так, чтобы условный массив с постами пользователя сам заполнялся ссылками
Artem B
чтобы при изменении списка постов, массив с постами пользователя заново пересчитывался
Nick
чтобы при изменении списка постов, массив с постами пользователя заново пересчитывался
тут два варианта, либо в софте делать и при появлении постов прописывать их везде где нужно и обновлять все что требуется, если используется монгус то там были мидлвари которые упрощают реализацию такого. Ну и второй вариант - это триггеры, но на монге такое есть только в облачных инстансах, по крайней мере в атласе есть
Ivan
Привет, есть массив и в нём есть объекты не могу понять как он индексируется, создаю обычный индекс по полю
Ivan
что значит "понять как индексируется"?
По какому принципу идёт индексация по возрастанию количества элементов в массиве или как-то по-другому
Ivan
по значениям индексируемых элементов
А если элемент является объектом с несколькими полями?
Nick
А если элемент является объектом с несколькими полями?
без разницы, если вам для выборок нужен индекс по объектам (сравнение именно объектов), то это также будет работать
Nick
если надо по полям внутри этих объектов, то указываете путь до поля для индексации
Ivan
если надо по полям внутри этих объектов, то указываете путь до поля для индексации
Я не понял, у меня есть массив в нём объекты, как они отсортируются
Nick
Я не понял, у меня есть массив в нём объекты, как они отсортируются
отсортируются так как вы укажите при создании индекса
Nick
при работе с объектами у вас не будет возможности сделать выборку с сортировкой и будут проиндексированы только запросы на полное совпадение
Nick
вы лучше скажите что вам надо пол логике делать
Ivan
отсортируются так как вы укажите при создании индекса
У меня есть поле массив, я его индексирую мне нужно понять как будут отсортированы эти массивы в индексе
Ivan
Просто нужно ли добавлять в индекс партишиалы на отброс пустого массива
Nick
просто такие массивы не будут попадать в выборку
Вадим
Всем привет, юзаю Ktor и на одно поле написано @JsonIngore от Jackon. И Kmongo не сохранят это поле в БД. Кто-то знает как игнорить поле для фронта, но чтобы в бек сохранялось?
Ринат
Всем привет) Подскажите плз как командами mongosh получить DDL коллекций?
Nick
но это не ddl, это информация, по которой можете уже сделать свои скрипты накатки
Nick
Всем привет) Подскажите плз как командами mongosh получить DDL коллекций?
и для получения индексов https://docs.mongodb.com/manual/reference/method/db.collection.getIndexes/
Ринат
db.getCollectionInfos()
Я так сделал и получил одинаковую инфо по всем коллекциям, различие только в полях: name, info->uuid, idIndex->ns А как можно дальше раскрыть информацию?
Nick
в монге кроме как списка коллекций и какие там индексы больше к DDL ничего не относится
Ринат
Например командой db.getCollection("answers").find().pretty() Я получаю нечто вроде: { "_id" : ObjectId("5d2735f642d8a00001af5579"), "taskId" : NumberLong(18), "studentId" : BinData(3,"AAAAAAAAAAADAAAAAAABAA=="), "answersTime" : ISODate("2019-07-11T13:13:26.740Z"), "answers" : "{}", "_class" : "ru.sbt.sber_learning.content.answers.Answers" } В принципе нужно узнать типы полей в коллекции
Nick
это не SQL базы, где определяются колонки и их типы, в монге такто и типы для одного поля могут различаться
Cloud
ну если только json схема не задана
Ринат
Спасибо)
Nick
ну если только json схема не задана
это хороший момент, хотя и тут вопрос в том была ли схема указана до наполнения данных и менялась ли она в процессе, так то монга допускает работу со схемой, но в режиме валидации только новых документов
Shahzodbek
кто знает как подключить mongodb к node js
Alexander
камил
Привет, есть какое-то условие которое приблизительно сравнивает строку в базе данных?
Cloud
$regex
камил
$regex
есть примеры?
Alex
есть примеры?
https://docs.mongodb.com/manual/reference/operator/query/regex/ https://regex101.com/
Nick
Привет, есть какое-то условие которое приблизительно сравнивает строку в базе данных?
что значит "приблизительно" в вашем случае? если достаточно по части строки, которую точно знаете, то регулярки. Если знаете слово целиком, но окончания могут плавать - то можете использовать $text. Если вам надо чтото по типу fuzzy или скоринг похожести, то это не в монгу
Anonymous
Hi
Semyon
Добрый день, при попытке сделать mongodump появляется ошибка: Failed: error writing data for collection dev.users to disk: error reading collection: BSON field 'FindCommandRequest.snapshot' is an unknown field. В чем может быть проблема?
Semyon
У вас дамп, на каждую коллекцию по 2 файла?
ну там metadata к каждой коллекции еще. Спасибо, но проблему уже решил добавив аргумент --forceTableScan
David
Всем првиет! Я могу получить количество столбцов у записи? Мне нужно отсортировать таблицу по количеству колонок в записе. У меня легаси код и мне кажется, что вся таблица пустая по смыслу. Пример: на скрине 4 и 4
Nick
Всем првиет! Я могу получить количество столбцов у записи? Мне нужно отсортировать таблицу по количеству колонок в записе. У меня легаси код и мне кажется, что вся таблица пустая по смыслу. Пример: на скрине 4 и 4
Количество столбцов? В монге столбцов нет, аналог это поля. Список полей в конкретном доке можно получить в агрегации через $objectToArray и потом $size над получившиммя массивом. Это надо будет над каждой коллекцией выполнять отдельно, т.к. кроссзапрос будет большой и проще сделать несколько, если операция разовая