Агрегат Мангуста - где поле первого поля в массиве объектов больше другого - PullRequest
0 голосов
/ 11 июня 2019

У нас есть сложный запрос, который мы пытаемся решить (хорошо нам его сложный xD)

У нас есть коллекция документов, которые содержат общую информацию о свойстве.Каждое свойство имеет поле цены, которое содержит массив объектов, в которых мы храним любые изменения цены для свойства.Существует три типа объектов ценообразования:

  1. Продано: это окончательная цена, согласованная при продаже имущества
  2. В списке: Это начальная цена, когда имущество было выставлено на продажу.market
  3. Изменение: это изменение цены по сравнению с существующим листингом.

По сути, мы пытаемся получить выходные данные о свойствах, которые в настоящее время продаются, но имелиснижение цены.

Мы не уверены, как этого добиться.Мы полагаем, что нам нужно сравнить объекты с «типом», установленным на «изменить», и сравнить цену с объектом, который имеет тип «в списке», поскольку указанная цена является первоначальной объявленной ценой, поэтому любые технические снижения ниже указанныхсчитается снижение цены.

Однако, если у нас есть следующее:

  1. в списке: € 50 000 - 12/12/2018
  2. изменение: € 40 000 - 12/ 13/2018
  3. изменение: € 39 000 - 12/14/2018

В таком случае, как мы можем сказать, что изменение цены составляет € 1000?Стоит ли сравнивать индексы [2] и [3], а не сравнивать перечисленные элементы?

Мы пытались вести учет последней известной цены, но это создает проблемы, главным образом, потому что у нас хранится 400 миллионов + адресов.

let aggregate = AddressModel.aggregate ();aggregate.unwind ("_ lists");

  // Listing status
  let listingsMatch = {
    "_listings.listing_status": "for_sale",
    "_listings.pricing.type": "change"
  };

  aggregate.match(listingsMatch);

  aggregate.group({
    "_id": "$_id",
    "full_address": { "$first": "$fullAddress" },
    "pricing": { "$first": "$_listings.pricing" },
  });

  aggregate.sort({
    "renewed_date": -1
  });

Выходными данными должны быть только адреса, имеющие статус for_sale и имеющие снижение цены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...