🍗
ты прав
Ilya
=))
Vlad
)
🍗
2 дня
🍗
два дня играюсь
Vlad
Бывает
Nick
а если бы использовали монгошелл то одного запроса бы хватило
🍗
честно сказать я не знаю что такое монгошел, сейчас пойду гуглить. Я никогда не работал с монго, а так совпало что сейчас надо сделать некие запросы монго.
Nick
а через что вы лазите в монгу?
🍗
Компост
🍗
я от него копировал название коллекции) он мне пробел впехнул)
🍗
так большое спасибо всем кто откликнулся, я бы ещё 2 дня игрался)
Игорь
А подскажите такой момент, когда нужно создавать индексы в коллекции по полям? У меня коллекции от 80 до 800 тысяч документов. Выполняю поиск и сортировки по ним и все очень быстро вроде. $regex по большим текстовым полям в коллекции почти на миллион и все за доли секунды .
От каких объемов производительность проседать начинает вообще?
Игорь
И это при том, что я ещё не разворачивал это на сервере, пока на локальном компе гоняю
Nick
Все свои запросы прогоняйте через экспоейн иначе вы пропустите момент когда индексы перестанут юзаться для регэкспа, если вообще сейчас используется
Игорь
Ну я вообще кроме _id индексов сейчас не имею в коллекциях. Я думал создавать или нет, начал гонять базу на все запросы, которые буду использовать... и все летает. А по текстовым полям вообще возможно создать индекс, если там русский и английский текст в перемешку? И будет ли в этом толк? Сегодня ознакомился с доками и если я их правильно понял, несколько языков можно задать для нескольких полей в одном документе, а вот одно поле в документе так не индексируется
yopp
Когда начнёт тормозить, тогда и создавайте
Игорь
А вообще из практического опыта, после скольких миллионов записей начинаются задержки на чтение?
Nick
Когда не помещается в оперативу раз пять
Nick
Т.е. На 1гб рам 5 гб данных
🍗
Столкулся с проблемой, делаю запись скриптом, в Mongo тип значения int64 стоит, я записывается значение int32 , и из-за этого проблема. Что можно придумать ?
Nick
Язык какой?
🍗
PHP
Nick
Тогда не подсуажу
Nick
но в общем случае смотрите доку к своему драйверу и как он мапит типы данных вашего языка в типы монги
Anonymous
у меня есть mongoose схемы:
1) Post, в которой есть поле author
c рефом на схему User (автора поста).
2) схема Reply, в которой есть поле postId с рефом на Post
и поле author c рефом на схему User (автора комментария).
я могу находить отдельно все коментарии по id поста
могу завести массив с id-шников всех комментариев.
Как лучше делать? И как мне выводить количество
комментариев у поста когда комментраии не нужно грузить ?
Anonymous
заводить в схеме Post поле replyCount и при создании
нового коментария увеличивать этот счетчик у Post ?
но ведь может так произойти что комент сохранился,
а счетчик не увеличелся из-за сбоя, тогда он будет всегда отставать
Anonymous
я делаю для учебного проекта )
что более подходящее для вывода количества коментариев ?
🍗
Кто пожет помочь с запросом. Нужно у данного _id изменить в accountsBag->items->... count где itemid=7 )
🍗
🍗
Как правильно добраться до этих строк?
$bulk->update(
['_id' => 3],
['$set' => ['accountBag' => array('CashInventory' => array('items' => array('items' => array(0 => array('count'=>123) ) ) ) )]],
['multi' => false, 'upsert' => false]
);
Игорь
а такой вопрос. Если условно мне нужно искать по фамилии, имени, отчеству, то лучшим решением будет сделать во всех документах поле 'полное имя' и искать по нему? опять же индекс не подойдет, именя могут быть на англиском
Nick
а вам надо искать полное совпадение или частичное или допускаются ошибки или даже часть букв введенное на англицкой расrлfдке?
Игорь
полное соврадение введенной подстроки в строке.
то есть при поиске по имени, найдет всех иванов. Но при поиске по имени, фимилии, отчеству найдет всех строго совпадающих.
вообще в задаче товары. только поле имя товара в приходящих данных разбито на три поля. А искать по ним нужно, как по одному.
То есть если вбили машики carmaker
где машинки одно поле в объекте(категория), а carmaker производитель,
то искать он дожен на полное совпадение.
как если бы это было одним полем name
yopp
Stable: 3.6.3 (Feb 23, 2018), Bugfix: 3.4.14 (Mar 20, 2018)
3.6.3: https://docs.mongodb.com/manual/release-notes/3.6/#february-23-2018
3.4.14: https://docs.mongodb.com/manual/release-notes/3.4/#march-20-2018
3.2.19: https://docs.mongodb.com/manual/release-notes/3.2/#feb-6-2018 (End of life: September 2018)
3.0.x: Support ended February 2018
Nick
Nick
сам поиск просто будет выглядеть как
.find({
"f1":"v1",
"f2":"v2",
"f3":"V3"
})
и результат такой же как если вы сделаете доп поле
Игорь
если я правильно понял, составной индекс типа текст?
Nick
нет,текстовый индекс нужен, когда у вас есть, например, заголовки статей и хотите искать по слову статьи с таким словом в заголовке. тогда текстовый индекс введенный заголовок разбивает на отдельные слова и дает возможность быстрой найти по отдельному слову саму статью
Nick
а в вашем случае это простой обыкновенный индекс
Pasha
Pasha
Pasha
Здравствуйте, нужна помощь с выборкой в одной колекции находятся id_bot и statement текст, в другой полная информация о statement. У меня есть id_bot и мне нужно сначала с первой коллекции найти все связанные с ним statement, а затем во второй, мне нужно выбрать,по тем statement которые связаны с id_bot in_response_to.text
Nick
посмотрите на $lookup
Pasha
посмотрите на $lookup
Спасибо, а можно ещё один вопрос, смотря на вторую картинку как достать in_response_to.text? .find({'text': 'I am good.'}) ,а как быть дальше?
Nick
это уже от вашего языка зависит. в данном случае получите весь документ целиком и работать будете с ним
Pasha
Nick
вообще через $unwind после лукпапа развернете массив, а дальше с помощью $project соберите результат
Nick
но нужно саму задачу поподробнее, а то советы могут не в тему быть
Игорь
а в вашем случае это простой обыкновенный индекс
там проблема в том, что пользователь не может точно определить к какому полю, какая часть поискового запроса относиться. то есть он вводит название товара, категория и продваец, как единую строку. что есть что не определяется. если бы я мог разбить заранее на значения для полей, задача значительно упростилась бы, но увы
Nick
вот как раз здесь текстовый индекс отработает, у него вроде есть возможность задать список полей по которому строить, т.е. не потребуется делать составное поле
Игорь
но он не может быть мультиязыковой, в этом беда. Английский и русский текст в перемешку.
я вот и думаю, придеться делать новое поле из трех и по нему регуляркой искать
Игорь
допустим в поле продавец может быть название как на русском, так и на английском языке(
Nick
а вы тестирвоали?
Vin
hello
Vin
im new member
Vin
from indonesia
Vin
nice to meet all
Nick
nice to meet all
this is russian group. try english version https://t.me/mongo_db
Vin
Igor
Кстати, кто чем монгу в проде бэкапит?
Nick
реплики
Igor
реплики != бэкап
Nick
в нашем случае нет необходимости в бекапах, да и просто снять бекап займет слишком много время и ресурсов. так что реплики
Nick
и в базу никто руками не лазит
Nick
а от какого сценария вы хотите забекапиться?
Igor
сервер с монгой упадёт и всё потеряетя
Nick
реплика с этим справляется
Igor
реплик нет, у заказчика только 1 vm, и он хочет бэкапиться
Nick
хех, тогда не помогу
Igor
реплика с этим справляется
а как реплика справляется в случае ошибок в коде, неверных действий админов, после которых данные удаляются?
Igor
или данные перезаписываются не те
Nick
легко, на прод выкатывается протестирвоанный софт, а админы пишут скрипты и руками ничего не делают. и скрипты тк же прогоняются на тесте
Igor
ну, тесты не все ошибки могут выявить
Igor
баг может и на прод проникнуть
Igor
тесты не серебряная пуля
Nick
перезатирку всех данных выявлять должно иначе что это за тесты
Igor
тут вопрос в человеческом факторе
Igor
в тестах тоже могут быть ошибки