Илья
тут только могу отправить проверять типы, т.к. этого тут не видно
В body.products приходит массив _id из схемы Cart.product. C типами все нормально. В таком случаем вопрос, можно ли делать populate вложенных полей схемы. Я ведь ссылаюсь не на id схемы Cart, а на ее поля
Нуриддин
Nick
А как вы поняли что они криво созданы?
вместо вместо описания типов числа
Илья
вместо вместо описания типов числа
Это заглушка что бы не отвлекать от вопроса
Nick
8.1.2
https://github.com/Automattic/mongoose/issues/14435
Nick
возможно связано
Илья
Спасибо за наводку
Yura
а проблема в чем? что просто хочется это видеть?
Хотя бы понять почему так происходит, может из-за этого станет ясно почему не видно.
Nick
Хотя бы понять почему так происходит, может из-за этого станет ясно почему не видно.
потому что так работает wiredtiger движок. Он занимается менеджментом места внутри созданных файлов в рамках выделенного объема. Само собой имеется эффект фрагментации при удалении данных, компакт как раз нужен для дефрагментации/компактифации файлов коллекций
Nick
Хотя бы понять почему так происходит, может из-за этого станет ясно почему не видно.
собственно эффект от компакта зачастую такой же как и от дефрагментации в винде - для собственного успокоения. В редких случаях это действительно надо, если вдруг надо диски подрезать, но под пром БД такое не должно случаться
Yura
Т.е. грубо говоря, этого нюанса и не наблюдается когда мы удаляем всю коллекцию целиком, т.к. удаляем файл физически. А если удаляем данные из коллекции частично, то движок колдует внутри этого сжатого файла и потому размер не меняется пока не прогонишь компакт.
Yura
Всё понял, спасибо
yopp
Т.е. грубо говоря, этого нюанса и не наблюдается когда мы удаляем всю коллекцию целиком, т.к. удаляем файл физически. А если удаляем данные из коллекции частично, то движок колдует внутри этого сжатого файла и потому размер не меняется пока не прогонишь компакт.
Абсолютно верно: у движка внутри собственное управление свободным местом, при удалении данных внутри файла пространство помечается как свободное и туда в дальнейшем будет вестись запись. Поводом делать компакт обычно является удаление больших объёмов данных и при условия что их столько уже в коллекцию не запишут, например при экспорте в другое хранилище. Еще узкий случай когда средний размер сжатого документа сильно увеличился, при этом старые данные из коллекции удаляются, но размеры свободных участков меньше чем размеры новых — реальная фрагментация
yopp
И еще в корне collStats в ключе freeStorageSize, но я не уверен что там те-же данные что в block-manager
Yura
Благодарю
yopp
Но не факт что compact именно столько освободит, там много факторов
Виктория
Всем привет! Можете помочь с информацией как установить mongodb? 🥺 Пишу диплом и никак не могу установить саму систему Подскажите откуда вообще лучше скачивать 🙏🏻
Светлячок
https://www.mongodb.com/docs/manual/installation/
Ivan
Либо через докер
Светлячок
Либо через докер
Для нее этот вариант вряд ли самый простой)
Виктория
Спасибо всем 🙏🏻
Alexander
Есть ли возможность после агрегации для поиска дублей с group и match получать данные с лимитом по группам, а не по кол-ву документов?
Schroedinger's
здравствуйте, вопрос следующий. может кто-то подсказать. Как и где можно реализовать рабочий сервер написанный на ноде с обращение к монго дб, чтобы отправлялись данные на на сайт
Schroedinger's
сервер написан и всё остальное есть, но работало только на стационарном компьютере с обращением к нему в сети, но данная возможность сейчас недоступна
Schroedinger's
хочу перейти на облако, но не совсем понимаю как оно будет там работать, там уже готовые варианты серверов или можно прописывать под себя?
Schroedinger's
на данный момент есть сервер написанный в ноде с открытым апи сервер обращается к монго дб и отдаёт через апи данные на сайт
Ivan
спасибо посмотрю
Не зная как там насчет монги
Ivan
Но ноду задеплоить можно
IDONTSUDO
https://www.dmosk.ru/miniinstruktions.php?mini=nginx-nodejs-ubuntu
laplandin
Гайз, привет, есть коллекция на 1М+ приличных таких жсонов, только что перелитая с другой дб и уже под внешней записью. Если включить индексацию (19 индексов, включая текстовый) это не может деградировать запись новых документов на время индексации? Где-то можно почитать caveats или практики на этот случай?
Stargrapefruit
Здравствуйте. Извините за возможно глупый вопрос, но как сделать доступ к монге с любой точки земли? Пытался указать айпи 0.0.0.0 как это принято везде, но все сломалось и пришлось вернуть локальный айпи. Что можно сделать?
Владимир
она развернута на машинке с белым ip?
Stargrapefruit
она развернута на машинке с белым ip?
Как это понять? Сервер арендуется в time web 🤔
Владимир
ну при аренде тачки можно указать, что необходим "белый" ip адрес. Это тот адрес, до которого можно достучаться извне
Stargrapefruit
Стоит редис, марияdb они доступны из вне, а монго не покоряется мне
Stargrapefruit
Владимир
а пингуете по адресу машинки?
Владимир
хм, я не эксперт в развертывании и настройки монги, но мб попробовать bindIp убрать?
Stargrapefruit
а пингуете по адресу машинки?
root@283217195-qw44535303:~# mongosh --username **** --password ******* --host 81.*******0 --port 27017 Current Mongosh Log ID: 6610467425bfc2a0fbef634a Connecting to: mongodb://<credentials>@81.*********0:27017/?directConnection=true&appName=mongosh+2.2.3 MongoNetworkError: connect ECONNREFUSED 81*********0:27017 Пытаюсь дёрнуть
Владимир
https://stackoverflow.com/questions/75704485/how-to-connect-directly-to-a-database-with-mongosh
Владимир
посмотри тут строку подключения
Владимир
по-моему префикс mongodb: должен быть
Lazaro
alguien me puede recomendar un curso de mongo db desde cero con studio 3t?
Lazaro
si me pueden pasar el link
Ivan
si me pueden pasar el link
https://youtu.be/CbFsmqGb1OM?si=uVvwtyz1_Js7_UfH
Lazaro
Me serviría más si estuviera en español o ingles
Sulaymon
Здравствуйте, подскажите плз кто знает, как обращаться к productMapping.$id записи при селекте ?
Sulaymon
вот собственно сам запрос: db.productMappingRecord.find({_id: new ObjectId("6610192208b2d6373fe988d1")}).limit(10).forEach(function (productMappingRecord) { var found = db.productMapping.find({"_id" : new ObjectId(productMappingRecord.productMapping.id)}).limit(1); print(found) });
Sulaymon
где я не так делаю ?
Harvest
Ребят, а как получить такой же формат данных в mongodb const DB_URL = 'mongodb://c52584_vadimmafiainvest_com:LiRmoQencutof61@mongo1.c52584.h2,mongo2.c52584.h2,mongo3.c52584.h2/c52584_vadimmafiainvest_com?replicaSet=MongoReplica'// URL базы бота
Nick
Ребят, а как получить такой же формат данных в mongodb const DB_URL = 'mongodb://c52584_vadimmafiainvest_com:LiRmoQencutof61@mongo1.c52584.h2,mongo2.c52584.h2,mongo3.c52584.h2/c52584_vadimmafiainvest_com?replicaSet=MongoReplica'// URL базы бота
Имеется в виду формат строки подключения к репликасету? https://www.mongodb.com/docs/manual/reference/connection-string/#standard-connection-string-format
Сотрудник 236
где я не так делаю ?
без new, просто ObjectId. Он уникальный, нафига ты limit используешь? Если надо делать "join" как в sql, то читай про lookup.
Сотрудник 236
И без new пробовал, но без результата
Запускай компас и пробуй aggregate конструктор.
-
вот собственно сам запрос: db.productMappingRecord.find({_id: new ObjectId("6610192208b2d6373fe988d1")}).limit(10).forEach(function (productMappingRecord) { var found = db.productMapping.find({"_id" : new ObjectId(productMappingRecord.productMapping.id)}).limit(1); print(found) });
Первый find надо заменить на aggregation, в котором на первой стадии надо использовать $match, на второй стадии использовать $lookup, у него есть две реализации, подробнее можешь найти в документации. Ещё стоит отметить, что смысла в limit 10 нет т.к. ты ищещь по _id, а он имеет индекс уникальности т.е. две записи не могут быть с таким _id в одной коллекции. Ещё, стоит отметить, что если тебе не надо было дальше проводить какие-то операции, а просто найти документ по _id, то необходимо использовать findOne за место find. Перейдем к блоку с forEach. 1. Использование переменных var в JS это уже плохая практика. 2. Если в твоем find было условие, которое возврашало сразу несколько документов, то в качестве результата у тебя была бы только последняя итерация т.к. ты каждый раз заново перезаписываешь. 3. Если смотреть на скрин, то там тип ObjectId, а значит за место find надо было использовать findOne и без limit.
Что?
Здравствуйте. Создал записи в монге, но на следущий день они пропадают. С чем это может быть связано? Доступ имеется только у меня. Бд лежит на арендованном сервере. Взаимодействую с бд с помощью motor python
Что?
Наружу. 0.0.0.0
Что?
Что это значит? Монго не безопасна снаружи?
Нуриддин
Что это значит? Монго не безопасна снаружи?
Ну технически с этой настройкой монга доступна для подключения всем внешним серверам кто до неё дотянется