Alexander
По идее, если вы просто запустили новый инстанс mongod и указали dbpath - старую папку dbpath, он должен подхватить все данные, а не половину.
of Astora 𒉭
Alexander
Я немного запутался - вы сначала специально удалили данные, а потом передумали и решили восстановить? И ваш хостер предоставил вам старый бекап вашей машины, но там старая версия данных?
of Astora 𒉭
Nick
of Astora 𒉭
Nick
значит не получится восстановить данные?)
Вы же их удалили, они магическим образом ниоткуда не появятся. Все что из бэкапа достанете будет, остальное по логам приложения восстанавливать, если они у вас есть в подходящем виде.
Alex
Всем привет.
Посоветуйте онлайн инструмент для дизайна бд, коллекции, типы данных, связи и всякое такое. Желательно бесплатное.
Когда-то пользовался https://mongo.tools но он что-то протух
Спасибо
Anton.
Ребята всем салют! Вопрос к тем кто юзал typegoose.
1) Почему он мне позволяет создавать пустой элемент хоть я и указал что есть required поля?
2) Почему все поля для него - any ?
Alikhan
Всем привет!
У меня есть заказы и юзеры.
Юзер может откликатся на заказы.
Подскажите пожалуйста +- следующих решений.
А если точнее:
- какое решение правильнее
- какое решение быстрее по производительности
- какое решение не забьет базу
1 решение:
Есть коллекция заказов:
ordersCollection:
[
{
_id: '...',
usersId: Ref(usersCollection)[],
...
},
...
]
usersId - хранятся id юзеров которые сделали отклик.
2 решение:
Создается новая коллекция:
orderRespondedCollection:
[
{
_id: '...',
userId: 'Ref(users),
orderId: Ref(orders)
},
...
]
В отличий от 1 решения, во 2 решений нету вложенности и для кажлого отклика создан свой документ.
Alikhan
Dmitry
В первом случае ты можешь под ограничение попасть т.к. лимит 16 МБ на 1 док.
В втором случае, какая разница сколько у тебя там записей. Сделай индексы, а всё остальное монга возьмет на себя. Ты сможешь спокойно получать статистику для отчётов, что на такой-то заказ было то столько откликов или пользователь сделал отклики на вот эти заказы.
Dmitry
Вообще если есть возможность в один док всё впихнуть, то лучше впихнуть, но надо сразу обдумать возможные проблемы, которые могут возникнуть в будущем и удобно этим пользоваться / поддерживать.
Alikhan
Alexander
Alexander
https://www.mongodb.com/time-series
Андрей
Привет. Есть кто успешно работает с бэкапами через Percona Monitoring&Management?
Андрей
Что - никто ни разу за столько лет не тискал PMM ни для ПГ, ни для Мускуля, ни для Монго? 🤨
Alexandrr
вопрос по mongoexport.
(решён)
юзаю os.system, то же самое что и cmd в шиндошс, только через питон.
вопрос про экспорт.
там в .json формате при экспорте автоматически включается поле _id.
как ни пытался его исключить, не получилось.
пробовал:
1. --fields - не исключает поле _id
2. --query '{}, {'my_field': 1, '_id': 0}' - не удаётся использовать из-за ошибок экранирования
так как json принимает только двойные кавычки """, а их нужно экранировать для cmd, то как я только не пробовал варьировать экранирование, ошибку синтаксиса кидает и хоть ты убейся
монга 5.0
клиент подключения 5.0
какие есть ещё варианты исключить _id поле из экспорта?
Alexander
Alexandrr
Боюсь никак, только удалять из файла после экспорта
у меня такая кверя залетает в cmd:
--query \"{}, {\"uuid\": 1, \"sub_category\": 1, \"_id\": 0}\"
согласно доки экранирование выполнено верно для cmd, однако, получаю ошибку:
is not valid JSON: invalid character ',' after top-level value
Андрей
Только постобработкой - правильно.
Nick
Nick
и в квери вы зачемто два json объекта пытаетесь упаковать
Alexandrr
что мешает внешние одинарные кавычки использовать?
ничего не мешает, но тогда cmd неверно считывает строку передавая её в mongoexport, получаю такую ошибку при одинарных кавычках:
error parsing command line options: error parsing positional arguments: provide only one MongoDB connection string
два объекта, как в случае с .find()
где 1 объект, условие поиска, 2 условие проекции
Nick
Alexandrr
Nick
Alexandrr
а чем мешает _id?
ну как минимум отдавать файлы по 2 мб серверу на 5 млн пользователей или по 1.3 мб
Андрей
Логично, что документный источник данных не будет выгружать документы встроенным средством без их идентификаторов. Что потом с этим экспортом делать? Документ без идентификатора как человек без головы 🤔
Alexandrr
Alexandrr
я конечно могу это делать и через само приложение потоком или процессом отдельным, но почему-то подумал, что специальная утилита будет это делать "более оптимизированно", чем мои кривые руки
Nick
Alexandrr
Nick
Nick
обычный гет запрос, кэш и не надо думать о файлах какихто
Nick
Андрей
Убрать текст по паттерну структуры - дело одного/двух условных сэдов в баше в постобработке по выгруженному файлу. Или я неправильно понял цель задачи?
Alexandrr
Андрей
Единственное что - долго будет на большом объёме
Андрей
Можно в 15 минут и не уложиться и навалить нормальный такой оверхэд на тачку
Andrey
Александр
Объясните, почему индекс не работает? mongodb 5.0, бд 700млн документов. есть такой индекс
{
key: { fieldTypesUpdated: 1 },
partialFilterExpression: { type: "paymentRequest" }
}
документов с {type: "paymentRequest"} мало, размер индекса всего 1.7мб
нюанс в том что ни у одного документа поля fieldTypesUpdated нет
тем не менее, я почему то считаю, что для запроса {type:"paymentRequest"} индекс должен использоваться, но этого не происходить. Почему?
Alexander
mrFix
Приветствую.
Есть aggregate: match -> lookup -> replaceRoot -> project -> limit
Подскажите как добавить поле с общим кол-вом документов в выборке.
Mark
mrFix
$size
Что то никак( В replaceRoot или project?
Alexander
В конце отдельным stage и выведется только это число.
mrFix
Alexander
О том и речь, $size - это аггрегирующий stage.
Если вам так сильно нужно получить количество документов вы можете сделать это в отдельном $facet
Alexander
Для pagination придется делать второй запрос в любом случае, это дешевле, чем запрашивать всякий раз в $facet
mrFix
Alexander
Столько же :-), facet это по сути параллельный запрос в одном большом запросе
mrFix
Alexander
Смотрите, чтобы получить количество документов - единственный вариант для базы данных, это выполнить запрос и посчитать сколько документов возвращается.
В теории можно по быстрому получить оценку, но у вас 2 $match и $lookup между ними, боюсь тут нет других вариантов, кроме выполнения запроса
mrFix
Я надеялся что возможно какой нибудь count запилить и при replaceRoot увеличивать его, а потом toArray и из последнего элемента достать😁
mrFix
Alexandrr
vladissick
Ребят после (findOne, findById) методов есть возможность просто юзануть update метод на докумете поулченом? Или только через статические методы Модели?
mrFix
vladissick
vladissick
Класса целого
Alexander
vladissick
Alexander
У документа нет методов, это метод коллекции
mrFix
vladissick
vladissick
просто недавно посидили на ларавел то я вот аналогию провожу с ним
vladissick
Alexandrr
главное не забывать, что вызовов чем больше, тем медленнее всё работает
Alexander
В качестве отвлечения, такой паттерн, когда объекты ORM обеспечивают функциональность работы с базой данных, как метод save(), называется Active Record был впервые введен Ruby on Rails, если я не ошибаюсь.