Евгений
Если полное совпадение входящего массива с массивом в документе тогда смотрите инструкцию $all если нужен хотя бы один $elemMatch
Евгений
Евгений
Вот, попробуйте elemMatch с вложенным in
Avtandil
отлично, то что нужно. Я не мог понять как передать массив. Благодарю за помощь. Попробую сейчас сделать
Евгений
Хоть у кого-то сегодня все попрет)(
Евгений
Кстати работает даже с обычным in без elemMatch
Евгений
Видимо при запросе понимает что в документе массив
Евгений
Евгений
Короче решил сам свой вопрос
Евгений
Евгений
Ответ, если кому интересно
Евгений
Инвертируем через $not и через $elemMatch ищем элементы которые не входят в нужный массив
Евгений
Только вот он не сможет использовать индексы
Мне индексы неважны, у меня данных в таблицах максимум 1000 документов плюс я делаю ещё друг к фильтры где как раз будут индексы использованы
Евгений
Только вот он не сможет использовать индексы
Потому сначала он по индексам отсортирует а затем будет этот трюк с elemMatch not nin и т.д
Nick
Не увидел на скрине что это часть пайплайна - там итак не будет индексов
Евгений
Не увидел на скрине что это часть пайплайна - там итак не будет индексов
Там условие настолько большое что IDE не хочет по нему фильтровать, потому взял только небольшую часть
Евгений
Не увидел на скрине что это часть пайплайна - там итак не будет индексов
Плюс там таблица не настолько большая и не будет большой, потому для меня подходит
Alexey
Привет, подскажите, пожалуйста, есть ли в MongoDB готовый (нативный) механизм версионирования документов? Нужно для хранения истории изменений документа в rails приложении по истории в чате - нашел только ссылку http://www.askasya.com/post/trackversions/ но с тех пор прошло уже почти 6 лет
yopp
Ссылка более-менее актуальна и сегодня
Kenan
Есть такие доки. Вопрос: как сделать поиск по объектам, которые находятся в items? Пытался сделать так ( 2 скрин ), но возвращает всю доку, а мне нужно возвращать массив с подходящим объектом
Kenan
Евгений
$elemMatch попробуйте
Евгений
А так Вам не искать надо, а настроить какое поля выбирать?
Kenan
А так Вам не искать надо, а настроить какое поля выбирать?
мне нужно искать и вернуть объекты, которые удовлетворяют запросу
Евгений
мне нужно искать и вернуть объекты, которые удовлетворяют запросу
То есть вам надо вернуть элемент из массива items?
Kenan
То есть вам надо вернуть элемент из массива items?
мне нужно вернуть все подходящие элементы из массива items из всех доков
Kenan
ну т.е. есть ща 3 дока, мне нужно чтобы find пробежался по ним, посмотрел в items и если есть подходящий - отдать мне объект подходящий под мой запрос
Евгений
мне нужно вернуть все подходящие элементы из массива items из всех доков
Я думаю вам в сторону агрегирующих функций надо смотреть, вы на чем пишите, на nodejs?
Kenan
Я думаю вам в сторону агрегирующих функций надо смотреть, вы на чем пишите, на nodejs?
вообще, ощущение, что нужно смотреть в сторону второго параметра функции find
Евгений
вообще, ощущение, что нужно смотреть в сторону второго параметра функции find
Я хз, я только 2 дня как сам юзаю эту БД, ща попробую покурить доки, но если Вам надо получить внутренние доки, сначала надо задаться вопросом, насколько правильно вообще их хранить внутри другого документа
Евгений
Хз насчёт второго параметра
Евгений
Но вот с помощью группировки мне кажется можно
Kenan
думал на счёт группировки, но только на обычном JS :D
Kenan
но это плохой варик
Kenan
Евгений distinct подходит, но по нему find ( метод монги ) не могу сделать
critskiy
вам нужно только попробовать сделать нечто вроде db.collection.find({"xx.xx": your_value})
critskiy
все
critskiy
Евгений
все
Я думаю он не просто так используется?
Kenan
до этого просто предложили данный способ поиска
Kenan
сам согласен, что поиск с помощью регулярки - так себе затея
Евгений
critskiy
таким образом возвращает всю доку
потом через projection, если вам определенные элементы документа
critskiy
надо только вернуть
Евгений
но -секъюрность
О вон смотрите, есть какой-то projection, что выше предложили я думаю это Ваш вариант
Kenan
тип, не особо помогло. Сейчас попробую ещё раз
Евгений
Ну так он скорее всего каждый документ представляет в определенном виде
Евгений
Вам придется группировать скорее всего
Евгений
Я хз, но могу предположить что проджекшн это просто типа как select [какие-то поля] from
Kenan
крч
Kenan
я осёл, забейте
Kenan
Kenan
@critskiy как посоветуешь сделать побуквенный поиск?
Nick
@critskiy как посоветуешь сделать побуквенный поиск?
Что значит побуквенный поиск? Бизнес задача какая?
Kenan
Что значит побуквенный поиск? Бизнес задача какая?
есть подобные коды. Администратор в своём приложении будет вводить последние 4 цифры ( для удобства и быстроты ) для активации кода
Kenan
мб не правильно сформулировал вопрос
Nick
Данных много?
Kenan
Данных много?
будет примерно 10-15к
Евгений
db.foo.insert({desc: "This is a string with text"}); db.foo.insert({desc:"This is a another string with Text"}); db.foo.ensureIndex({"desc":"text"}); db.foo.find({ $text:{ $search:"text" } });
Kenan
но, скорее всего больше
Евгений
Там есть что-то вроде полнотекстового поиска
Nick
Тогда регулярка
Kenan
Тогда регулярка
регуляркой вот
Kenan
Kenan
а стоп
Kenan
он мне отдал все items из доки
Kenan