mongodb中子文档排序的分页访问

时间:2016-11-23 07:17:01

标签: mongodb

问题在于我不知道如何在mongodb中编写关于子文档排序的页面访问权限的源语句。谁能帮帮我?

1 个答案:

答案 0 :(得分:1)

MongoDb子文档排序分页访问如下:

db.getCollection('Request').aggregate(
                    {$match:{"UserId": 1}},      
                    {$unwind: "$ReceiveRequestList"}, 
                    {$sort:{"ReceiveRequestList.IsStatus": 1, "ReceiveRequestList.CreateTime": 1}}, 
                    {$group: {"_id" : "$_id", "TotalCount":{$sum: 1}, "ReceiveRequestList": {"$push": "$ReceiveRequestList"}  }},

                    {$unwind: "$ReceiveRequestList"},
                    {$skip: 1},
                    {$limit: 1},
                    {$group: {"_id" : "$_id", "ReceiveRequestList": {$push: "$ReceiveRequestList"}, "TotalCount": {$first: "$TotalCount"}   }},
                    {$project: {"_id": 0, "ReceiveRequestList": 1, "TotalCount": 1}
)

解释上面的代码:

  1. “请求”是tablename
  2. “ReceiveRequestList”是子文档名称
  3. “$ unwind”命令将子文档列表拆分为多个主文档
  4. “$ sort”用于按字段名称排序
  5. “$ group”用于统计
  6. “$ skip”和“$ limit”用于分页获取数据
  7. “$ project”用于过滤fieldname 0:表示不包含fieldname 1:表示包含fieldname
  8. 摘要: mongodb不能直接支持子文档排序,所以我们需要“$ unwind”命令将子文档列表拆分为主文档,然后排序主文档(使用“$ unwind”命令生成),最后使用“$ group”命令将主要文档合并为子文档列表。

    我希望它可以帮到你!