首页 > 解决方案 > 从不同的跳过获取相同的记录

问题描述

我正在按状态对项目进行排序,并且通过多个不同的跳过,我得到了相同的记录。

我使用了聚合框架。

第一个查询:

db.order.aggregate([
  {
    "$match": {}
  },
  {
    "$project": {
      "orderId": "$order_id",
      "name": 1,
      "dateCreated": "$date_created",
      "status": 1,
      "dueDate": "$deliveryMethod.delivery_date",
      "selectedQuantity": {
        "$sum": "$items.selectedQuantity"
      }
    }
  },
  {
    "$sort": {
      "status": -1
    }
  },
  {
    "$skip": 16
  },
  {
    "$limit": 1
  }
])

第二个查询:

db.order.aggregate([
  {
    "$match": {}
  },
  {
    "$project": {
      "orderId": "$order_id",
      "name": 1,
      "dateCreated": "$date_created",
      "status": 1,
      "dueDate": "$deliveryMethod.delivery_date",
      "selectedQuantity": {
        "$sum": "$items.selectedQuantity"
      }
    }
  },
  {
    "$sort": {
      "status": -1
    }
  },
  {
    "$skip": 17
  },
  {
    "$limit": 1
  }
])

我希望得到不同的记录,因为在第二个名为 15 的查询记录中应该被跳过。

第一个查询 第二个查询

标签: mongodb

解决方案


嗨@razzil1 问题是=>您的排序不起作用,因为您的投影。

在你说 "status" 的投影之后:1 => mongodb 不知道排序 "$sort" : { "status" : -1} 因为他不认识,你需要把 "status" : "$地位”

问候, 销售


推荐阅读