Nick
Гена
Задача в следующем - создать алёрт, который будет предупреждать если бд разрослась почти до лимита.
Nick
Получается это задача для администрирования места в папке а не в базы, т.е просто берете df -h парсите скока мкста занято и скока всего, там вроде и процентаж был гдето
Nick
Если у вас какаято облачная монга, то берите просто стату бд, там есть скока места она занимает и мониторьте это значение
Гена
Nick
монга не в облаке
Тогда я не понимаю почему надо мониторить через запрос к морге, а не мониторинг самого сервера
Nick
У монги есть вполне фиксииованный путь где лежат данные, там тот же 'du -sh .' покажет сколько места занимает папка
Гена
я к тому, что в реплика сете находится несколько БД, и так как в дататопе они находят в виде collection-4-4137684697285707732.wt и тд то думаю невожножно вычесть где там что
Nick
Тоода через стату бд
Гена
ну вот) получается надо запарсить стату, чтоб оно показывало размер в ГБ и потом дальше думать
Nick
Просто в чем сама бизнес задача? Что случится после 10гб, почему только 10гб?
Nick
Просто нужно не забывать, что монга жмпт данные по дефолту и размер бд и размер занимаемых файлов это немного разные вещи, плюс не забываем про индексы
Гена
Nick
Max
Вам или через системные утилиты взвешивать директорию с монгой (du), либо берите db.stats() с включенным indexDetails, и смотрите на размер данных.
там будет и размер файлов на диске, и размер непосредственно данных, которые там лежат для понимания фрагментации.
Max
плюс вы сможете разделить размер самих данных и индексов.
там, по сути, содержится _вся_ необходимая вам информация.
ну а как ее обрабатывать - то уже решать согласно вашей бизнес-задачи
Гена
Гена
Kenan
@yatoba ещё раз спасибо за вчерашнюю подсказку, сейчас работать с данными стало легче, правда осталось вопрос на счёт редактирования одного элемента в массиве items у страницы, но думаю разберусь. ( 1 скрин - данные страницы, 2 скрин - то как обновляю массив items )
Kenan
Kenan
( мб и по скрину второму скажет кто-то что-то ( мб есть лучше решения ) )
Dima
нашествие ботов
Artemy
Вот зашли они в чат, а дальше что?
Dima
Твой вопрос похож на утверждение что за этим стою я, но это не так
Artemy
Нет, никаких подозрений там между строчек не было)
Artemy
Действительно интересно, зачем это делается
madspectator
madspectator
Посидят день, неделю, месяц в чате молча. Потом запостят спам.
madspectator
Если на сервере три одинаковых SSD диска, что будет быстрее работать:
1) журнал на одном диске, данные на втором, индексы на третьем
2) raid5 на трёх дисках, ну и журнал + данные + индексы на одном логическом разделе в raid5
?
Aleksandr
нашествие ботов
Где-то подняли сервак зависший и все отложки сработали разом
Kenan
Alexander
madspectator
У меня там нет такого варианта, есть noraid, raid0, raid1, raid5.
madspectator
Зеркало это raid1 и raid5 из вышеперечисленных? Так то у меня репликация ещё будет.
madspectator
Открывал. Разве я неправильно выше написал?
madspectator
Т.к. я ничего не понимаю в рейдах, я выбрал тот, который максимально мне подходит: noraid :)
madspectator
Просто вынесу collection директорию на второй диск, а index директорию на третий.
madspectator
Если диск крякнется, то данные останутся на secondary сервере реплики.
madspectator
Например, вводим дополнительные secondary, синхронизируем. Стопаем "мелкие" сервера. А при чём тут RAID? :)
madspectator
Почему, не понимаю. Вот запускаю я новый secondary, у него диск не 100 гигабайт, а один терабайт, синхронизирую туда primary, потом отключаю primary.
madspectator
Если вы имеете в виду, что в raid каких-то уровней можно на лету подмешивать новые диски, то это не мой случай, те серверы, что я использую не подразумевают добавление дисков. Так что это возможно лишь в некотором будущем, если я захочу сделать всё супер-мега-надёжно.
Alexander
Почему, не понимаю. Вот запускаю я новый secondary, у него диск не 100 гигабайт, а один терабайт, синхронизирую туда primary, потом отключаю primary.
Поясню: то, что Вы написали, будет работать до тех пор, пока есть промышленные диски размера большего, чем Ваши данные. Что, если в один прекрасный день таких дисков на найдётся? Если сейчас, положим для примера, максимальный размер ssd-диска 4Тб, и данные перестали в него "вписываться" - что тогда?
Alexander
Если вы имеете в виду, что в raid каких-то уровней можно на лету подмешивать новые диски, то это не мой случай, те серверы, что я использую не подразумевают добавление дисков. Так что это возможно лишь в некотором будущем, если я захочу сделать всё супер-мега-надёжно.
Дело в том, что Вы не объяснили, что у Вас за система, но спрашиваете, как лучше поступить. По этой причине Вы не получите конкретного ответа (никто не знает, как будет лучше в данной ситуации с непонятными критериями лучшести). Я задаю важные для принятия решения вопросы, не более того.
madspectator
Это, конечно, интересная теоритическая проблема, но у меня есть много практических проблем. Так что мой ответ: я без понятия и меня это пока мало волнует.
madspectator
Я не спорю, вопрос так себе у меня.
Alexander
Alex
Может быть кто-то подскажет... Мне нужно организовать поиск только по 2м полям. Первое на русском, второе на английском.
Пытался так:
db.roots.createIndex(
{ "translations.translateRu": "text" },
{ name : "RuIndex"},
{ collation: { locale: "ru" } },
{default_language: "russian"} )
db.roots.createIndex(
{ "translations.translateEN": "text" },
{ name : "EnIndex"},
{ collation: { locale: "en" } },
{default_language: "english"} )
Alex
запрос на поиск:
dbo.collection("roots").find({
$text:
{
$search: searchtext,
$caseSensitive: false,
$diacriticSensitive: true
}
})
.project({ score: { $meta: "textScore" } })
.sort({score:{$meta:"textScore"}})
Kenan
Kenan
мне до этого советовали искать с помощью регулярки
Kenan
Alex
одновременно индексацию на русском и английском мне добавить не даёт и если добавил индекс на русском - то поиск на английским выдаёт пустую строку, что ожидаемо...
Alex
Для меня сработал вариант регулярного выражения вида:
{"translations.translateRu":{$regex:new RegExp('(^|\\s)' + search + '(?=\\s|$)', 'i') }},
{ "translations.translateEn": { $regex:new RegExp('(^|\\s)' + search + '(?=\\s|$)', 'i') } }
Совместно с добавлением индекса:
db.roots.createIndex(
{ "translations.translateRu": "text" },
{ collation: { locale: "ru" },
{default_language: "english"},
{ name : "RuIndex"} )
поиском по тексту...
Евгений
Народ, есть проблема в запросе, если у меня есть входящий набор идшников допустим 1,2,3 и есть хранилище документов, где хранятся документы в которых есть массив из этих ид, так вот, мне надо выбрать все документы в которых все элементы массива входят в этот набор идшников, то есть беру я допустим набор 1,2,3 а у меня есть документы в которых есть 1,2 1,3 и 1,4 так вот, должны выбраться только 1,3 и 1,2 т.к. все элементы массива этих документов входят в мой предоставленный набор 1,2,3 при этом 1,4 должен исключиться, всю бошку сломал, плиз хелп
Евгений
Есть кто шарящий?
Евгений
Евгений
Есть типа вот такой документ с полем ExecutionEssential, там хранятся ID требующиеся для выбора этого документа
Евгений
Так вот мой набор может состоять из этих ИД плюс ещё несколько типа вот так
Евгений
Евгений
Но через elemMatch он выбирает даже если один ИД входит в этот массив
Евгений
А мне надо чтобы если все ИД входят в этот массив выбирались
Евгений
Проще, у меня есть ключи 1,2,3 и мне надо выбрать двери так вот есть дверь для которой подходят ключи 1,2 и мы ее выбираем, т.к. эти ключи у меня есть а если дверь для которой надо 1,4 мы не выбираем т.к. нет ключа 4
Avtandil
Привет все. Я недавно начал использовать монго, как понимаете не особо подкован. Не могу понять как построить конструкцию запроса чтобы найти совпадения в коллекции из ключей массива. Это нужно делать запросы в цыкле или есть конструкция где можно получить документы сделав один запрос с массивом ключей?
Подскажите пожалуйста. Спасибо заранее
Евгений
Евгений
Ну я как раз уже часа 2 бьюсь, вам надо чтобы хотя бы один элемент совпадал
Евгений
Или все совпадали?
Avtandil
У меня только такое решение. ["Tokyo","Pekin","Stambul"].forEach( city => { Cities.find({city}) }