Size: a a a

2020 May 27

ВВ

Вячеслав Волков... in MongoDB Russian
Вячеслав Волков
Всем привет!
Подскажите пожалуйста, есть ли возможность на ходу посчитать количество совпадений из массива positions и отсортировать результаты по их значению?

filters: {
 positions: [String]
}

Что значит “посчитать количество совпадений” - от клиента приходит аналогичный массив позиций, которые точно есть в свойсте positions коллекции filters, дальше идет сравнение через оператор $in:

$find: { positions: { $in: clientPositions } }
Пришлось повозиться и выучить aggregation’ы для монгуса, схема следующая:

filters.aggregate([
 {
  $addFields: {
   matchedPositions: {
    $size: {
     $setIntersection: [
      '$positions’,
      […позиции клиента],
     ],
    },
   },
  },
 },
]);
источник

ВВ

Вячеслав Волков... in MongoDB Russian
ток теперь появился вопрос популэйшена, как это сделать так же просто, как с функцией .populate, но думаю разберусь)
источник

ВВ

Вячеслав Волков... in MongoDB Russian
и пока что не знаю на сколько ускорится производительность от данного процесса, до этого все эти действия делал нодой. Щас проверю и отчитаюсь
источник

ВВ

Вячеслав Волков... in MongoDB Russian
Вячеслав Волков
и пока что не знаю на сколько ускорится производительность от данного процесса, до этого все эти действия делал нодой. Щас проверю и отчитаюсь
практически моментально выполняется, в то время, когда с нодой сервер вешался и не отвечал
источник

ВВ

Вячеслав Волков... in MongoDB Russian
а есть инфа у кого-нибудь как сделать populate в aggregate? вот есть у меня поле position: _id, как мне его популизировать? С помощью $lookup возвращается массив. Единственный способ это лукапить и брать первый элемент из массива? Или есть какие-то нормальные способы?
источник

IK

Ilya Kaznacheev in MongoDB Russian
Господа, а ведь в монге можно полноценно js функции писать, верно?
Может есть и примеры, где вся логика бэка реализована непосредственно на монге?
источник

ВВ

Вячеслав Волков... in MongoDB Russian
Ilya Kaznacheev
Господа, а ведь в монге можно полноценно js функции писать, верно?
Может есть и примеры, где вся логика бэка реализована непосредственно на монге?
откуда инфа что в монге можно жсом писать
источник

y

yopp in MongoDB Russian
Ilya Kaznacheev
Господа, а ведь в монге можно полноценно js функции писать, верно?
Может есть и примеры, где вся логика бэка реализована непосредственно на монге?
Нет, нельзя
источник

IK

Ilya Kaznacheev in MongoDB Russian
Все понял, спасибо
источник

DC

Daniyar Changylov in MongoDB Russian
ребят можно populate до функции find сделать?
источник

DC

Daniyar Changylov in MongoDB Russian
Daniyar Changylov
ребят можно populate до функции find сделать?
by best practise
источник

ВВ

Вячеслав Волков... in MongoDB Russian
а в чем смысл?
источник

ВВ

Вячеслав Волков... in MongoDB Russian
насколько мне известно - можно
источник

НА

Николай Алиферов... in MongoDB Russian
Daniyar Changylov
ребят можно populate до функции find сделать?
а тебя несложно найти) https://www.linkedin.com/in/daniyar-changylov-a20101161/
источник

DC

Daniyar Changylov in MongoDB Russian
короче надо найти по property of object который находится в объекте... но lookup в aggregate занимает очень много памяти
источник

DC

Daniyar Changylov in MongoDB Russian
😅
источник

DC

Daniyar Changylov in MongoDB Russian
Daniyar Changylov
короче надо найти по property of object который находится в объекте... но lookup в aggregate занимает очень много памяти
надеюсь доходчиво объяснил
источник

ВВ

Вячеслав Волков... in MongoDB Russian
Daniyar Changylov
короче надо найти по property of object который находится в объекте... но lookup в aggregate занимает очень много памяти
ну юзай elemMatch
источник

ВВ

Вячеслав Волков... in MongoDB Russian
Вячеслав Волков
Решил вопрос следующим образом:

User {
 $or: [
   { email: { $elemMatch: {lastMessage: ’something’} } },
   { email: { $elemMatch: {lastMessage: ‘same’} } }
 ]
}
возможно это поможет
источник

AV

Artem Verbat in MongoDB Russian
Приветствую! Хочу спроектировать базу для ресторана. Сложность в том как организовать позиции, например пицца, суп, напитки и тд. у них есть общие данные, например цена, название, описание, и есть отличающиеся, например у пиццы разные бортики и размеры. И как потом их с заказом связывать. Я вообще фронтендер, и собственно вопрос такой, что почитать, куда посмотреть, что-бы максимально быстро разобраться как что правильно делать? Года три назад уже работал с монго, но тогда была задача проще, да и не помню уже ничего.
источник