Vladimir
Мне да
Зачем?
yopp
А какой использовать?
зависит от задачи
Anonymous
Зачем?
Мне нужно в таком формате хранить
Vladimir
Может их просто на клиенте добавлять?
yopp
в принципе, у натуральных чисел принято опускать ведущие ноли, так как они не имеют смысла
Vladimir
Мне нужно в таком формате хранить
Ну это же не ответ 🤷‍♂
Anonymous
yopp
От 0000 до 9999
а зачем именно ведущие?
Vladimir
Если нужны ведущие нули, то храни в строках
Vladimir
Но они тебе не нужны скорее всего
Anonymous
Anonymous
Но потом по выборке как получить первый элемент такого массива? Если были бы условно числа, можно было бы использовать $gte, $lte
Anonymous
Можно получить весь документ и забрать конкретный элемент, но хочу его сразу получить от монги
Vladimir
Храни вт отдельном поле минимальный элемент
Anonymous
Спасибо за мысли, постараюсь сделать как можно лучше
Vladimir
Но мне все еще кажется, что тебе не нужны ведущие нули, ты всегда их можешь восстановить на клиенте
Vladimir
А хранить инты дешевле
Anonymous
Но мне все еще кажется, что тебе не нужны ведущие нули, ты всегда их можешь восстановить на клиенте
Да, могу. На клиенте только если организовать проверку на кол-во символов и добавлять недостающие нули, но разве это дело?
Vladimir
Да, могу. На клиенте только если организовать проверку на кол-во символов и добавлять недостающие нули, но разве это дело?
Ну во всех сценариях, которые я придумал, это более выгодно, чем хранить в базе строки
Anonymous
Ну во всех сценариях, которые я придумал, это более выгодно, чем хранить в базе строки
Спасибо, возьму этот момент во внимание и проверю как будет технически выгоднее
Захар
как удалить последнюю запись из бд?
Андрей
есть кто работал с монго в шарпе ?
Дмитрий
Народ, подскажите, есть ли инструменарий для автоматического развёртывания монги, сейчас я вручную создаю инстансы, правлю отдельные конфиги для них. Кажется. делаю это неправильно… Может какой скрипт или апп?
Philipp
Ребят, а если документ больше 16МБ его только как файл в GridFS хранить? Нет вариантов как-то автоматически его бить на поддокументы?
Philipp
Или только вручную, разделять на модели и т.п.
Daniil
проще всего изменить схему
Philipp
Semeon
Чат, вопрос немного абстрактный, но всё же. Что лучше? Самому поднимать «Монгу» или использовать, скажем, «Атлас»?
Nick
Чат, вопрос немного абстрактный, но всё же. Что лучше? Самому поднимать «Монгу» или использовать, скажем, «Атлас»?
понятие лучше для каждого свое, поэтому выпиываете требования и косты на админов и железа по этим требованиям и сравниваете деньги. Докучи оцениваем полную потерю доступу к атласу и какова стоимость такого риска. Есть еще конечно факторы, когда вам действительно нужно иметь физ доступ до серверов, но это тоже должно быть отражено в потребностях и сразу даст ответы на вопросы. Собсна после этого вы можете оценить лучше/хуже
Valerii
Приветствую. У меня такая проблемка, есть бд для шопа, решило сделать небольшой рефакторинг. Раньше было так, в магазине были категории и одна категория - одна коллекция, один товар - 1 документ этой коллекции, получалось немного неудобно, тк нельзя внести информацию о категории, теперь коллекция с категориями одна, 1 категория - 1 документ в коллекции, а товары - элементы массива. Приложу скрины структуры, так вот, к сути. Был aggregate запрос, который подбирал ближайший документ в коллекции по значению к числу (https://pastebin.com/2Emjj83x), теперь вот не получается сделать чтобы он подбирал ближайший элемент массива...
Valerii
Старая структура
Valerii
Новая структура
Araik
На вопрос не отвечу, но могу предложить для ознакомления эту статью https://www.mongodb.com/blog/post/retail-reference-architecture-part-1-building-flexible-searchable-low-latency-product
Leonid
Надеюсь я по адресу, подскажите пожалуйста как в монге 3.4+ можно сослаться на текущее значение поля внутри итератора по коллекции. Вот запрос чтобы было понятнее db.getCollection('some_collection').findAndModify({ query: { user_id: { $in: [ 3, 4 ] } }, update: { $set: { "field": "some value", "field2": "some value2", user_id: "тут текущий ид юзера из обрабатываемой коллекции", is_active: 0 } }, upsert: true });
Leonid
😢
Nikita
$match: { finish: { $gte: startOfDay, $lte: endOfDay } } гайз как найти сущности которые не входят в текущий диапозон startOfDay - endOfDay? $not не работает 😕
Dezmunt
Как обновить сразу несколько массивов в документе за один запрос? Я пытался так [ { $set: { 'filed.links': { $push: { 'link': { $each: data.links } } } } }, ... ]
Anton
Всем привет! Держу ops-manager в k8s с тремя репликами бд для него. Размер этих реплик люто растет каждый день и за пару месяцев переваливает за 15гб. Насколько я понимаю, там хранятся все пинги и всякий verbose за всё время. Подскажие, пожалуйста, могу ли я как-нибудь настроить очистку этих данных или поменять уровень хранимых логов? В интерфейсе и в гугле ничего не нашел
Dezmunt
Каким запросом можно найти документы у которых в массиве есть определенный элемент?
Dezmunt
field: [ 1, 2, 3] --> надо найти все документы у кого есть в поле field массив с 2-кой
yopp
field: [ 1, 2, 3] --> надо найти все документы у кого есть в поле field массив с 2-кой
https://docs.mongodb.com/manual/reference/operator/query/in/#use-the-in-operator-to-match-values-in-an-array
Dezmunt
А мы можем получить рандомный элемент из массива в одном документе? В гугле нашел про поиск документов через $sample, но эт не то
Dezmunt
А мы можем получить рандомный элемент из массива в одном документе? В гугле нашел про поиск документов через $sample, но эт не то
findOne( {field: value} ).skip(random).limit(1), этот кейс имеет право на жизнь? Или есть варианты по лучше?
Dezmunt
есть 500кк записей в массиве, и есть необходимость из этого массива брать случайное значение. Можно его просто получить и выбрать рандомный элемент, но может быть можно это все сделать на стороне БД?
Nick
собсна вопрос именно зачем именно случайное
Nick
на 500кк записей скип лимит будет печально работать
Nick
а данные статичны или постоянно добавляются?
Dezmunt
а условие поиска сильно ограничивает выборку?
нужен просто рандомный элемент из жирнющего массива
Bogdan
нужен просто рандомный элемент из жирнющего массива
да, выборка на 500к будет скипать долго, если попадется большое значение для скипа. возможно имееет смысл добавить номер для каждого поля (как auto increment) из 500к и не скипать, а искать уже по конкретному id от 0 до 500к, это поле будет проиндексировано и будет летать. если данные удаляются, тогда нужно доработать алгоритм, чтобы ваша функция начинала повторный поиск каждый раз, когда нет записей по рендомному id, если записи не удаляются, тогда не должно быть проблем.
yopp
нужен просто рандомный элемент из жирнющего массива
Генерировать случайное число и искать первое близкое значение
yopp
Если это objectid, то хватит знать самый младший и генерировать между ним и тем, который будет в текущую дату
Dezmunt
А если так, я создам поле где буду хранить величину массива, потом буду рандомить число в этом диапазоне, и получать доступ по индексу
yopp
При не очень равномерном распределении oid будет не идальго случайно, но можно сделать три запроса и с тремя случайными номерами и выбрать случайное из трёх
yopp
OID в префиксе содержит дату. Вам нужно выбрать случайную дату между самой первой датой и текущей
Bogdan
Зачем, если есть object id
Как на практике выбрать min oid и max oid?
yopp
И выбрать к ней ближайший oid
Nick
500кк
ок, тогда вопрос вы имеете ввиду коллекцию а не массив
yopp
Как на практике выбрать min oid и max oid?
Maxoid это time now + все установленные младшие биты (мак адрес, счётчик)
yopp
Минимальный нужно выбрать один раз и его можно закешировать
yopp
В принципе выборка минимального значения это поиск первого за $MinKey