Nikita
@melodeiro Можно, но почему оно не возвращает там?
Melodeiro
Вообще либа довольно странная, чего стоит setValue и SetTo (хотя может пока чего-то не понимаю)
Artem
нужен схематичный пример, а то не ясно какая структура
{ 'list': [ { 'id': 1, 'table': 123 }, { 'id': 2, 'table': 123 } ] } Нужно обновить поле table. При этом, порядкового номера словаря в листе я не знаю, но знаю айди словарей.
Vladimir
Всем привет! Есть переменная массив ObjectId. Мне нужно по этим ObjectId найти в другой коллекции документы. Пробую вот такой конструкцией: db.getCollection("users").find({_id : { $in : some_array}}); Ошибку не выдаёт, но и результатов нет. Если взять ObjectId из массива и попробовать найти, то всё норм
Alex
в массиве просто строки?
Vladimir
ObjectID
Vladimir
[ { "objid" : ObjectId("5e82c049e0d1840016bd5678") },
Vladimir
Как пример
Vladimir
Если взять это значение и попробовать просто по нему в коллекции поискать, то всё ок
Alex
должен бытть плоский массив
Alex
[ ObjectId("5e82c049e0d1840016bd5678"), ... ]
Vladimir
А можно как-то этот в плоский преобразовать?
Alex
на стороне кода
Vova
В принципе через aggregate можно на стороне сервера, $replaceRoot
Vladimir
Спасибо!
yopp
4.2.5 (Mar 26) ◦ 4.0.17 (Mar 25) • Плейграунд для запросов • Документация • Официальные курсы (Бесплатно) Stable: 4.2.5 ◦ Bugfix: 4.0.16 Legacy: 3.6.17 (Jan 27) По вопросам покупки Enterprise лицензии пишите @dd_bb ☠️: 3.4.23 (Jan ‘20), 3.2.21 (Dec ’18), 3.0.15 (May ’17)
Null
Мартовские обновления: * 4.2.5 * 4.0.17 А ещё появилась предварительная версия документация к версии 4.4, которая выйдет этим летом: https://docs.mongodb.com/master/release-notes/4.4/
Артем
поскажите пож, есть две коллекции users { _id:5e8b529fd819754631033310 name:"Name" age:25 email:"test@test.com" } и posts { _id:5e8b5f1519e9c2472ed8c2a2 userID:"5e8b529fd819754631033310" title:"title" description:"description" } через аггрегацию в Compass пытаюсь через lookup сделать запрос { from: 'users', localField: '_id', foreignField: 'userID', as: 'posts' } но безрезультатно, спасибо
yopp
убедителсь что у вас в posts значение userID того-же типа что _id в users
Артем
как раз проблема в том xnj users это ObjectId, я уже миллоион статей перерыл про конвертацию или toString, но так и не разобрался
Артем
а в posts userID - string
yopp
а в posts userID - string
в posts должен быть ObjectId, а не строка
Артем
был бы благодарен за более подроблное обьяснение) НАскольео я правильно понял, то мне нужно конвернтусь userID в ObjectId, но как мне это сделать? сохранять посты с базу из фронта уже с ObjectId ?
yopp
да, приобразоывать строковое представление в объект типа ObjectId
Артем
Вроде понял куда двигаться, спасибо огромное
Гена
Подскажите пожалуйста, если на сервере плохие диски, и при мизерных нагрузках на запись от монги, можно как-нибудь потюниг монгу чтоб в такой ситуации время ответа так не страдало ?
Georgii
👋 А если collection.copyTo() в 4.2 нет, то как скопировать документы одной коллекции в другую? https://docs.mongodb.com/manual/reference/method/db.collection.copyTo/
yopp
Подскажите пожалуйста, если на сервере плохие диски, и при мизерных нагрузках на запись от монги, можно как-нибудь потюниг монгу чтоб в такой ситуации время ответа так не страдало ?
Не особо. Раскидать нагрузку на несколько дисков, разложив коллекции и индексы с большими нагрузками. Это наверно единственный вменяемый вариант, но он создаёт трудности если резервные копии делаются снепшотами. Дешевле всего поменять диски
yopp
NVME копейки стоят
yopp
M2 дисков сейчас как грязи. Pcie слоты наверняка свободны есть. Переходник с m2 на pcie долларов 20 стоит
Гена
Тогда ^
Опять же, это инфра мы с ней не работает. Мы тыкаем инфру
Гена
а так если нет больше вариантов то наши руки чисты
yopp
Даже если бы варианты были, это не имеет смысла
Гена
Ну да...Нагрузка мизерная 60мб запись на диск в сек и почти 100 утилизации
yopp
Просто потому что ёмкости это врядли добавит. Можно поэкспериментировать с zstd или gzip, но это поможет только для данных и не факт что даст результата. Плюс при изменении паттерна нагрузки это никак не спасёт.
Гена
да вот и я так думаю.
Гена
Спасибо за совет))
yopp
Нет
yopp
Это потеребует перезалить все данные
Гена
оу
Гена
точно нет
yopp
Да, я ещё раз повторю мысль которую я вам уже полгода точно вещаю: диски стоят дешевле вашего рабочего времени
yopp
И простоя
Гена
yopp
Служебную записку напишите
Гена
Уже несколько раз проэскалировано на инфру но там, извиняюсь, мудаки сидят)
yopp
Сомневаюсь
Гена
но так мы хоть от себя стрелки отвели и пусть клиент с ними воюет
yopp
¯\_(ツ)_/¯
Гена
вот вот))
Гена
вообще хочу сказать огромное спасибо этому коммьюнити за помощь))
Евгений
Добрый день. Кто-то располагает актуальной информацией по сравнению полнотекстового поиска sphinx vs mongo?
Гена
и в частности @dd_bb
yopp
Добрый день. Кто-то располагает актуальной информацией по сравнению полнотекстового поиска sphinx vs mongo?
В монге нет нормального текстового поиска. Есть очень примитивный текстовый индекс, с дубовой словокосилкой и вшитыми стеммерами
yopp
Для простых задач подойдёт, для чего-то серьезного не подойдёт. Их нет смысла сравнивать, потому что монга это документное хранилище, а сфинкс специализированное поисковое хранилище
yopp
Зависит от задачи
yopp
Найти слово в тексте и отсортировать по какой-то волшебной метрике хватит. Найти по сочетанию слов, с исключениями, сложной морфологией или сразу на нескольких языках — нет
yopp
Исправления опечаток нет
yopp
Поиска по расстояниям нет
yopp
Ничего нет :) есть поиск слов по их нормальной форме и кале-то совсем дубовое ранжирование
Евгений
Dilame
В монге есть что-то типа CHECK CONSTRAINT?
yopp
В монге есть что-то типа CHECK CONSTRAINT?
https://docs.mongodb.com/manual/core/schema-validation/
Anonymous
Ребят, помогите плз запрос написать) Есьт такая структура: { id: 1, some_field: [ { date: date, value: 1 } ] } Мне нужно написать код, который будет инкрементить value в зависиомсти от даты Проблема в том, что этого элемента может не быть, например some_field: [], либо элемент с этой датой может отстуствовать (по сути сделать апсерт) Но я уже долго сражаюсь и не могу осилить. 🙁 Буду благодарен за помощь!
yopp
И что делать, если элемента нет?
Anonymous
А какая зависимость от даты?
мне приходит дата и какое-то число, мне нужно найти элемент в этом массиве по дате и инкреметнуть его, если его нет, то вставить
yopp
Для одного документа или для нескольких?
Anonymous
Для одного документа или для нескольких?
для одного забыл уточнить, что еще айдишка приходит ) то есть сматчить сначала по айдишке, потоом найти в массиве some_field элемент по дате и инкрементнуть value, иначе добавить в some_field эту дату и значение