mongoose 如何获取交易子属性范围内的数据

kwvwclae  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(79)

我正在尝试实现分页。但是我的收藏有点不同,以支持相同的。以下是我的收藏:

{
  "_id": {
    "$oid": "63593e8eef21110023a0d970"
  },
  "itemName": "commodity ",
  "date": {
    "$date": {
      "$numberLong": "1666793102984"
    }
  },
  "totalWeight": 4365282,
  "totalBags": 73740,
  "transactions": [
    {
      "_id": {
        "$oid": "63735d89f91c2c0023ce9d1c"
      },
      "kisanName": "fff",
      "kisanID": "632b5246abb36a002354eae8",
      "numberofBags": 19,
      "totalweight": 1163,
      "purchaserId": "6370ea3dac49fa00232f7d65",
      "purchaserName": "ggg",
      "rate": 55,
      "date": {
        "$date": {
          "$numberLong": "1668504969354"
        }
      }
    },
    {
      "_id": {
        "$oid": "637378111da44c0023d0f271"
      },
      "kisanName": "asdf",
      "kisanID": "632b50f6abb36a002354eac0",
      "numberofBags": 15,
      "totalweight": 861,
      "purchaserId": "6370e8c2ac49fa00232f7d3e",
      "purchaserName": "asdff",
      "rate": 59,
      "date": {
        "$date": {
          "$numberLong": "1668511761094"
        }
      }
    },
    
  ],
  "__v": 2128
}

在这个例子中,每个Commodity内部都有许多事务,我想给它们分页,每个查询返回25个事务,然而,我目前的Mongoose应用程序是一个简单的collection.find(),它返回商品和内部的所有事务。相反,我想得到商品,一次只有25笔交易。
我们如何才能做到这一点?

kqlmhetl

kqlmhetl1#

你可以简单地在查询的投影部分使用$slice

db.collection.find(
  {_id: {$oid: "63593e8eef21110023a0d970"}},
  {transactions: {$slice: ["$transactions", pageNum * itemsOnPage, itemsOnPage]}}
)

了解它在playground example上的工作原理

相关问题