如何在跳过和限制猫鼬之前进行排序?

时间:2019-01-03 13:21:01

标签: mongoose

const list = async function({
  end_cursor = 0
} = {}) {
  return await db.collection.find().sort({ _id: -1 }).skip(end_cursor).limit(50);
}

上面是我认为应该可以使用的代码,但是我发现它不起作用。这是显而易见的:

  let list1 = await list(0);
  list1 = list1.reduce((o, a)=>{
    let {
      _id
    } = a;
    o[_id] = true;
    return o;
  }, {});

  let list2 = await list(50);
  for (let i of list2) {
    let {
      _id
    } = i;
    if (list1[_id]) {
      console.log('repeated');
      break;
    }
  }

如果db.collection.find().sort({ _id: -1 }).skip(end_cursor).limit(50)有效,则list1和list2应该具有唯一的_id,但它们不是唯一的,而是控制台输出repeat

1 个答案:

答案 0 :(得分:0)

您可以根据需要使用聚合。

db.collection.aggregate([
  {$sort: {_id: -1}},
  {$skip: end_cursor}, //value should be a positive integer
  {$limit: 50}
]);