Nick
типа такого?
Lev
Ну... кажется не совсем. Кажется это просто ответ за запрос. Просто не сразу весь а кусочками, а-ля backpressure. Положим у меня в базе 1 2 3 4 5 Делаю запрос типа select top 5, оно бы мне вернуло "1 2 3 4 5" но я бы дальше сидел и слушал Потом в базу прилетает 6 и тогда мне база говорит "удали 1 и добавь 6"
Nick
в любом случае надо запрос заново делать, даже используя вьюхи
Lev
посмотрите, может и подойдет https://docs.mongodb.com/manual/core/views/
Кажется, это именованный просто запрос, записанный на стороне сервера.
Lev
какое хорошее определение вьюхи)
Я не понимаю, ирония это или нет )
T.A
всем привет. хочу удалить этот индекс и создать новый такой же compound индекс, но только вместо поля date поставлю другое. коллекция довольно большая и хотелось бы узнать насколько этот процесс может замедлить базу. просто приложение недавно вышло в прод, а сегодня началась активная реклама
SuleYman
Приветствую, хотел узнать у вас ребята, у меня скрипт парсера, которые тянет данные записывает в коллекцию и возможно картинки. Почему "возможно" так как не увидел как это просиходит в коде, подозрение что умеет это делать монго?! $db = self::getDB(); $bucket = $db->selectGridFSBucket(); $file = fopen(dirname(dirname(__DIR__)) . '/upload/image.jpg', 'wb'); $bucket->downloadToStream($objId, $file);
Andrew
Коллеги, день добрый! Как вы в Монге с decimal работаете и выполняете мат действия вне её? Поясню: есть саас сервис на php и MySQL + есть другой проект на монге и ноде. Хочу менять стек на первом проекте, но в первом проекте финансовые транзакции и важна точность.
Roman Khonichev
храни копейки
Nico
подскажите пожалуйста, как задать фильтр на update() только по ключу без значения? filter = {"key1": <any_value>}
Nico
.updateMany({})
и... а фильтр то как выглядеть будет по ключу?
Bogdan
и... а фильтр то как выглядеть будет по ключу?
Нужно чтобы key1 чему был равен? Нужно чтобы существовал, чтобы был не null, чтобы был пустой?
Nico
Нужно чтобы key1 чему был равен? Нужно чтобы существовал, чтобы был не null, чтобы был пустой?
надо сделать фильтр по всем элементам, у которых есть ключ "key1" а значение должно быть любым
Bogdan
Это ваш фильтр
Nico
{ key1: { $exists: true } }
👍👍 то что надо, спасибо а это из какого раздела?
Bogdan
Element Query Operators
Максим
Привет, ребята. Помогите с агрегагацией, пожалуйста. Ищу дубли доков с одинаковым полем innerid делаю так — [ { '$project': { 'innerid': 1, 'uuid': 1 } }, { '$group': { '_id': '$innerid', 'uuids': { '$push': '$uuid' } } }, { '$addFields': { 'sizeOfArray': { '$size': '$uuids' } } }, { '$match': { 'sizeOfArray': { '$gt': 300 } } } ] имею результат компасе — докумен с иннерид 959407 имеет 317 дублей. Но проблема в том что файнд {innerid: 959407} дает мне почти 5000 доков. Что я делаю не так? Почему разные цифры?
Viktar
{ key1: { $exists: true } }
{ key1: { $ne: null } } ещё можно, надо правда посмотреть перформанс, экзист вроде делает фетч документа
Максим
повысил и заработало. В шеле падает с ошибкой такой запрос. 2млн доков всего. Тогда новый вапрос, как сделать чтоб в шеле справиться с таким?
Максим
MongoError: Exceeded memory limit for $group, but didn't allow external sort. Pass allowDiskUse:true to opt in. at MessageStream.messageHandler (/usr/lib/mongodb-compass/resources/app.asar/node_modules/mongodb/lib/cmap/connection.js:266:20) at MessageStream.emit (events.js:200:13) at processIncomingData (/usr/lib/mongodb-compass/resources/app.asar/node_modules/mongodb/lib/cmap/message_stream.js:144:12) at MessageStream._write (/usr/lib/mongodb-compass/resources/app.asar/node_modules/mongodb/lib/cmap/message_stream.js:42:5) at doWrite (_stream_writable.js:417:12) at writeOrBuffer (_stream_writable.js:401:5) at MessageStream.Writable.write (_stream_writable.js:301:11) at Socket.ondata (_stream_readable.js:713:22) at Socket.emit (events.js:200:13) at addChunk (_stream_readable.js:294:12)
Максим
это ошибка
Andrew
это ошибка
И даже написано, как исправить.
Andrew
В bson есть тип Decimal128, который поддерживает фиксированную точность
Да, знаю, вопрос в том как потом вне монги с этим работать и насколько будет эффективно.
Максим
И даже написано, как исправить.
allowDiskUse:true ? куда это написать не понял
Andrew
allowDiskUse:true ? куда это написать не понял
В гугл. Сирисли. Вам дали удочку)
yopp
В гугл. Сирисли. Вам дали удочку)
У нас не принято посылать в Гугл. Знаете где дан ответ, давайте ссылку
yopp
Да, знаю, вопрос в том как потом вне монги с этим работать и насколько будет эффективно.
Это вопрос к вашему драйверу. Официальные драйвера обычно приводят к похожему по свойствам типу
Nico
{ key1: { $exists: true } }
а если наоборот - известно значение и неизвестен ключ? ^^ это тоже сработает?
yopp
Про эффективность вопрос не очень понятен
Andrew
А на этот вопрос можете ответить?
А что именно надо? Дубликаты должны быть в коллекции или нет? Опишите исходную бизнес задачу.
Andrew
Это вопрос к вашему драйверу. Официальные драйвера обычно приводят к похожему по свойствам типу
Вот вот. В стринг конвертнет и потом надо будет использовать какой-то bigint js для сложения, умножения, деления... В общем хотел услышать про то, был ли или есть у кого опыт работы в реальных фин проектах на монге... Я пока от пхп лучше избавлюсь и заменю нодой, но вот майскл на монго боюсь...
yopp
Использовали, никаких проблем не было. Драйвер заворачивал в тип с фиксированной точностью
Максим
А что именно надо? Дубликаты должны быть в коллекции или нет? Опишите исходную бизнес задачу.
Вообще поле innerid и uuid должны быть уникальными, они есть в каждом документе. С uuid все ок, он не повторяется, а вот innerid нет. Хочу узнать сколько у меня уникальных innerid в коллекции
yopp
До появления d128 хранили в копейках. Сомневаюсь что преобразование между типами будет проблемой
Nico
В таком случае нужно использовать $or
filter = {"$or": "ConstValue1"} ? В доках такой пример: db.inventory.find( { $or: [ { quantity: { $lt: 20 } }, { price: 10 } ] } ) - т.е. еще надо через db.inventory.find() ?
Максим
[ { '$project': { 'innerid': 1, 'uuid': 1 } }, { '$group': { '_id': '$innerid' } }, { '$count': 'count' } ]
Максим
сделал так
Максим
просто изначально делал так же, но не подумал про лимиты и мне из 2 млн 98тысяч выдавало, не мог поверить в общем моя ошибка была в лимитах компаса. спасибо за помощь
Nico
Нет, сразу .updateMany() можно использовать
да при чем здесь updatemany(), когда проблема в прицеле на нужные доки? в фильтре что туда вставлять
Nico
А можно при вытаскивании данных find() - исключать "_id" автоматически присвоенный, из результатов? или когда он мешает - его надо вручную убирать?
Nico
Не подкинете каких-небудь материалов/статей и знаний по ускорению и скорости работы Монги? Никаких почти представлений нет о том что подкручивается для скорости.
Антон
Подскажите пожалуйста - как поменять мастера в реплике? И чтобы он всегда был мастером, если с кластером все ок
Dmitriy
Коллеги, добрый день. Подскажите что делать дальше? Скачал и распаковал этот архив
Dmitriy
Как мне теперь сделать дубликат базы? Как использовать вообще эти утилиты? все базы расположены в Атласе
Nick
Как мне теперь сделать дубликат базы? Как использовать вообще эти утилиты? все базы расположены в Атласе
открываете консоль и пишите команды, в каком виде с примерами можете поискать в доке по названию утилит. Чтобы сделать дубликат вам нужен mongodump если полную копию БД и mongoexport если хотите например только определенные данные сохранить
Nick
не обязательно
Nick
можно просто в эту папку перейти в консоли и там исполнять
Nick
также можете добавить путь до папки в переменную PATH и тогда можно будет из любого места их вызывать
Dmitriy
также можете добавить путь до папки в переменную PATH и тогда можно будет из любого места их вызывать
C:\mongodb>mongodump --db=test --collection=records "mongodump" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Dmitriy
оо вроде получилось. А как законектиться к атласу?
Dmitriy
открываете консоль и пишите команды, в каком виде с примерами можете поискать в доке по названию утилит. Чтобы сделать дубликат вам нужен mongodump если полную копию БД и mongoexport если хотите например только определенные данные сохранить
Вот подскажите как дальше сделать. У меня есть база называется dd Я сделал mongodump и у меня появилась папка dump в папке с утилитами. Как мне теперь эти все данные залить в базу ddd ?
Dmitriy
Все получилось, спасибо
Maxim
Добрый день. А может кто-нибудь подсказать, где можно посмотреть запросы, которые выполняются в бд mongodb?
Diego
Народ, мне надо сделать модель юзера, для которой есть 2 роли. Как лучше всего сделать? Две разные модели юзеров или одну общую, но добавлять роль? И если второй вариант, то каким образом? Сделать третью модель, где будут хранитьсядокументы с названим роли и id юзера или модель из двух документов, в которых будут просто названия роли.
Nick
но на самом деле странно что модели ролей имеют разный вид