首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在arrayOfObject中使用分页(每页记录10条记录

尝试在arrayOfObject中使用分页(每页记录10条记录
EN

Stack Overflow用户
提问于 2020-09-03 15:25:36
回答 1查看 31关注 0票数 1

我有这样的数据

代码语言:javascript
复制
    {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},...n{}]
   }

   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},...n{}] 
  }

  {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},...n{}] 
  }
  {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},...n{}]
  }
  
  {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},...n{}]
  }

我在这里尝试得到的是在每次调用中恰好有10条记录,当我有这样的数据时(assign_id恰好有1条记录)

代码语言:javascript
复制
   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{}]
   }

   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{}]
   }
   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{}]
   }
   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{}]
   }
  {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{}]
  }

问题陈述

我想在每个呼叫中恰好有10个记录,其中包括assign_id计数

例如,假设我有这样的东西

代码语言:javascript
复制
   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},{},{},{},{},{},{},{},{}]
   }
   {
    _id:ObjectId("")
    c_id:ObjectId("")
    assign_id:[{},{},{},{},{},{},{}]
   }

现在,如果我查询,我只想要第一条记录,因为它正好有10条记录(assign_id:有10个对象)。

当前查询

代码语言:javascript
复制
db.find(condition)
    .limit(parseInt(count))
     .skip(parseInt(skip))

我也尝试使用下面的代码

代码语言:javascript
复制
 db.find(condition,
    {assign_id:{$slice:[parseInt(skip),parseInt(count)]}})

但是不起作用,请帮助并原谅我冗长的解释。

EN

回答 1

Stack Overflow用户

发布于 2020-09-03 16:04:57

你可以用aggregate()方法来实现,

1(升序),-1(降序),

  • $unwind array
  • $sort set $skip assign_id $limit
  • $group by _id
  • $skip_id by assign_id _id,您可以根据需要设置字段<

>F223

代码语言:javascript
复制
db.collection.aggregate([
  { $unwind: "$assign_id" },
  { $sort: { _id: 1 } },
  { $skip: 0 },
  { $limit: 10 },
  {
    $group: {
      _id: "$_id",
      c_id: { $first: "$c_id" },
      assign_id: { $push: "$assign_id" }
    }
  },
  { $sort: { _id: 1 } }
])

Playground

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63718758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档