получить _id из коллекции Orders и выполнить фильтрацию в зависимости от условия - PullRequest
0 голосов
/ 01 февраля 2019

Я получаю _id s из коллекции Orders, которые активны и соответствуют указанному условию.

  const orders = await Order.find({ _id: { $in: Object.keys(ordersIdCount) }, isActive: true}).select({ _id: 1 });

ordersIdCount - это объект, который содержит идентификаторы и количества заказов.

const ordersIdCount = {
 '5asdkjbasnclxbnz6451001e': "2",
 '5asdkjbasnclxbnz6451001b': "3",
 '5asdkjbasnclxbnz64510018': "9",
 '5asdkjbasnclxbnz6451001c': "8",
 '5asdkjbasnclxbnz6451001e': "3",
 '5asdkjbasnclxbnz64510019': "1" 
}

Я хочу достичь этого состояния:

const ordersIdCount = {
 '5asdkjbasnclxbnz64510018': "9",
 '5asdkjbasnclxbnz6451001c': "8",
 '5asdkjbasnclxbnz6451001b': "3",
 '5asdkjbasnclxbnz6451001e': "3",
}

По фильтрация , сортировка по количествам и , принимая4 самых больших по количеству .

Что я сделал до сих пор:

const sortedIds = Object.keys(ordersIdCount)
  .filter(orid => !!orders.find(o => o._id === orid))
  .sort((oid1, pid2) => ordersIdCount[oid2] - ordersIdCount[oid1])
  .slice(0, 10);

Затем я снова позвонил Order модель и указал filterd _id s.

const referredOrders = await Order.find({ _id: { $in: sortedIds } });

Чего я пытаюсь добиться: я хочу делать все это с помощью вызовов db, не используя функции сортировки и среза фильтра js.Я думаю, что я должен использовать некоторые агрегации.Нужна помощь синтаксиса MongoDb.

Это одна строка из моей коллекции заказов

{
"_id" : ObjectId("5asdkjbasnclxbnz6451001c"),
"price" : 1.2, 
"name" : "myOrder"
}

Достаточно получить только поле _id.

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