Мел
как мне теперь создавать обьекты в todos: [] ???
Каким роутом туда достучатся?
yopp
как мне теперь создавать обьекты в todos: [] ???
https://www.mongodb.com/docs/drivers/node/current/fundamentals/crud/write-operations/embedded-arrays/
Air
Как правильно хранить дату в бд? Делаю инсерт Date.now(), который мне дает js (это timestamp) В монго сохраняется как Double (я нуб)
Air
` { timestamps: true, }`
а как это указать не через mongoose, а обычным способом без схемы
Мел
а как это указать не через mongoose, а обычным способом без схемы
Блин не знаю, я тоже нуб 😂, сам только вникаю
Мел
а как это указать не через mongoose, а обычным способом без схемы
может вот так, щас такой пример попался `use blogs NEW_POST = { name: "Working with Arrays", user: "Database Rebel", desc: "Maintaining an array of objects in a document", content: "some content...", created: ISODate(), updated: ISODate(), tags: [ "mongodb", "arrays" ] } db.posts.insertOne(NEW_POST)`
Air
const start = Date.now(); //js timestamp const not_found = { username: jwt.decode(req.token).username, code: req.params.code, time: start, //ЗДЕСЬ в бд падает Double found: false }; mongoClient.db("test").collection("api_logs").insertOne(not_found);
Air
а хочется чтобы падал timestamp или оставить Double и проблем не будет?
Alexandrr
а хочется чтобы падал timestamp или оставить Double и проблем не будет?
да смотря какой формат удобен. что хочется, то и хранится. unix время = timestamp iso время = ISOdate()
Air
крч я не понял как все это применить синтаксически не прибегая к mongoose 🤡 нормально если хранить в Double? потом при чтении через js переведу
Air
главное чтобы ничего не сократилось/потерялось в Double
Alexandrr
главное чтобы ничего не сократилось/потерялось в Double
согласно спецификации типов данных монго, double (как и везде) 64-битное. при хранении unix-timestamp в 32-битном типе данных, могут возникнуть ошибки, описанные тут: https://ru.wikipedia.org/wiki/Unix-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F но 64-битного double вполне достаточно.
dima shumov
Товарищи, доброго дня! Вопрос к экспертам: как эффективно и быстро создать индекс на date поле в одной коллекции на 20+млн. записей? 1. Возможно ли это без блокирования r/w на коллекцию? 2. ensureIndex() — я так понимаю аналогичной функции более нет в старших версиях монги? Думаю, не стоит говорить о том, что я уже пробовал с наскоку выполнять createIndex(), что приводило к блокировкам на чтение/запись
dima shumov
Андрей
Я индексы строю в гуях в NoSQLBooster например. db.getCollection("TestDB").createIndex({ "_etag": 1 }, { "background": true })
Андрей
3 раза мышей кнопнуть.
dima shumov
https://www.mongodb.com/docs/v5.0/reference/method/db.collection.createIndex/#mongodb-method-db.collection.createIndex
Андрей
А точно, бэкграунд депрекейтнули с какого-то мажора.
Андрей
Ну тогда не должно лочить доступ к данным.
Андрей
В начале создания и по завершению только лочит кратковременно, остальное время данные должны быть доступны.
dima shumov
создание индекса идёт фоновым потоком. недавно мне отвечали на похожий вопрос. данные не блокируются при этом
У меня рядом стоит сервис, SSO, который журналит события в коллекцию, и при создании индекса этот самый SSO сервис отваливается, так как не может достучаться до Монги
Alexandrr
ну и конкретно про background: true, что выше написал Андрей: https://www.mongodb.com/docs/v3.0/core/index-creation/ здесь исчерпывающий ответ
dima shumov
ну и конкретно про background: true, что выше написал Андрей: https://www.mongodb.com/docs/v3.0/core/index-creation/ здесь исчерпывающий ответ
Это всё здорово, но для старых версий монги. В моём случае - увы, фича не актуальна
dima shumov
У меня доходит до смешного - рефьюзятся коннекты из приклада в монгу, по таймауту
dima shumov
Условно вот такая картина (Java)
Alexandrr
создаём коллекцию рядом, создаём в ней индекс, наполняем записям из целевой коллекции. когда заполнение завершено, удаляем вначале старую, затем новую переименовываем в название старой но это большие накладные расходы, другого решения я не видел.
dima shumov
Это тоже вариант, да. Для меня, так же, приемлем вариант временной остановки сервиса SSO, проведения манипуляций с БД, и перезапуска сервиса SSO. Но до последнего не теряю надежду, возможно что-то упускаю из возможностей Монги, ибо не знаком с ней настолько плотно
Alexandrr
есть ещё другой подход такой же комбинации действий
dima shumov
Будем значит рассматривать идею подмены коллекции, ну либо, на крайняк, стопать сервис и пытаться успеть в окно SLA
Alexandrr
Будем значит рассматривать идею подмены коллекции, ну либо, на крайняк, стопать сервис и пытаться успеть в окно SLA
создаём новую, делаем тоже, что описал выше, только не переименовываем, а меняем на уровне обращений "название коллекции" на новое. таким образом поиск и все остальное будет возможен, но не сразу по всем записям, пока они из старой будут перемещаться в новую, а только по перемещенным в новую в текущий момент времени. после завершения операции, старую удаляем. при этом переключение происходит до начала "переливания данных", но и после создания индекса
Alexandrr
это подходит, если поиск по коллекции не критичен
dima shumov
это подходит, если поиск по коллекции не критичен
Поиск совершенно не критичен, да. Важно не тормозить запись
dima shumov
Вариант тоже отличный, пойду эксперементировать. Спасибо вам за содействие, Александр!)
Alexandrr
Поиск совершенно не критичен, да. Важно не тормозить запись
тогда вариант с "постепенным наполнением новой" самый подходящий, остаётся решить только на уровне кода "переключение названия коллекции" к которой идёт обращение.
Alex
вчера улучшил тарифный план на Бегете (монго стоит на vps) начались чудеса, запрос с Монго приходит с задержкой до 20 секунд, причем весь день было отлично (0.4сек задержка), а сейчас опять началось. По мониторингу сервера никаких проблем. Это просто совпадение? может кто то сталкивался с таким?
Олег
Привет, здесь я реализовал фильтр по полю документа (seasonPrices (это массив)), он должен вернуть один документ. У меня вопрос - могу ли я получить только один обьект поля (seasonPrices (массив)), тот которые заметчило условие?
Олег
Я получаю в ответе свой документ { ..., seasonPrices: [ { from: '''', until: '''', price: 0 }, { from: '''', until: '''', price: 0 }, { from: '''', until: '''', price: 0 }, ] }
Олег
Могу ли я как-то получить только тот обьект массва seasonPrices, по которому делал начальный запрос (скрин выше)?
Alexandrr
получить количество записей в коллекции спипаем до "количество - 10", а потом лимит 10. лимит нужен, если при выполнении произошло 100 вставок, что бы не учитывать эти вставки новых документов без него - ни как
Illia
Привет. Господа, а кто что использует для создания рест арт? Имею ввиду пагинацию, фильтрация и тд, может есть пакеты какие
Alexandrr
Можно попробовать отсортировать по натуральному ключу. И взять 10
"последние добавленные 10 записей" у него задача
Viktar
https://www.mongodb.com/docs/manual/reference/operator/meta/natural/
Alexander
toLower не работает с русским языком?
Aleksandr
Добрый день! Возможно, вопрос дилетантский. Например, для работы через браузер с БД MySQL, расположенной на хостинге, существует сервис adminer. Есть какой-нибудь аналогичный сервис для работы через браузер с БД MongoDB? Спасибо!
Aleksandr
для браузера не знаю но для windows есть: Mongodb compass studio3t
Да, для windows - понятно, знаю. Вот вопрос, как на сервере управлять данными, аналогично mysql
Oyatillo
Да, для windows - понятно, знаю. Вот вопрос, как на сервере управлять данными, аналогично mysql
humongous.io и этот сайт как мне кажется делает того что просили
Aleksandr
Я обычно пользуюсь SSH tunneling порта
И это понятно. А вот чтобы визуализация была :)
Aleksandr
tunneling + compass
Наверное, так получится. Попробую. Спасибо!
Oyatillo
ssh myvps -L 27017:localhost:27017 Вот это команда работает. Можно и с vscode или Putty
Oyatillo
Наверное, так получится. Попробую. Спасибо!
Я ошибся не port tunneling а Port Forwarding
Aleksandr
Я ошибся не port tunneling а Port Forwarding
Да, я понял по смыслу.
Ihor
Ihor
Ihor
Пару месяцев назад все работало, сейчас возвращается пустой массив продуктов
Ihor
Не могу понять в чем может быть проблема
Andrej
Подскажите по варианту складывания логов сервиса в формате json в монго. Дело в том, что сам сервис использует монго как основную БД, если в попугаях, то чтение: нечасто и мизерный объем данных (анкета, настройки пользователя) , запись: небольшой объем данных и чуть чаще (история действий пользователя). При работе приложения с внешним сервисом есть json (в основном ~4200 символов, но не более), который нужно в лог писать. Появляются примерно с той же частотой, что и основные запросы к БД в сумме. Нужно ли в монго для такого режима работы указывать какие-то настройки, чтоб оптимальнее была работа с учетом того, что логи читаться будут редко и "вручную"?
Andrej
Например, логи не в коллекцию складывать, а в отдельную БД и там как-то настроить. Или будет достаточно не создавать индекс для логов и не париться.
Dima
Всем привет, подскажите, монгуз это надстройка над монгодб или это уже новый формат базы? Спрашиваю потому как учил монгу по старой инфу там было просто mongo
Dima
Просто смотрю доки, уже все через mongosh и импорт и подключение... Я так понимаю лучше на современном варианте уже писать?