> db.test1.find().pretty()
{
"_id" : ObjectId("55dc145ef754a3342000002d"),
"games" : [
{
"id" : 1128,
"name_zh" : "追击野兽",
"customize_update_time" : "2015-05-18 00:00:00"
},
{
"id" : 3276,
"name_zh" : "dasda",
"customize_update_time" : "2015-05-15 00:00:00"
},
{
"id" : 3416,
"name_zh" : "围剿外星客",
"customize_update_time" : "2015-04-25 00:00:00"
},
{
"id" : 10357,
"name_zh" : "合金弹头:防御",
"customize_update_time" : "0000-00-00 00:00:00"
},
{
"id" : 10360,
"name_zh" : "绿色忍者蛙年",
"customize_update_time" : "2015-06-30 15:52:10"
},
{
"id" : 10364,
"name_zh" : "杀死马里奥",
"customize_update_time" : "2015-06-30 16:08:09"
},
{
"id" : 10366,
"name_zh" : "通过繁殖征服世界",
"customize_update_time" : "2015-06-30 16:21:22"
},
{
"id" : 10229,
"name_zh" : "冰块切割",
"customize_update_time" : "2014-11-04 00:00:00"
},
{
"id" : 10356,
"name_zh" : "吃冰淇淋的怪房子",
"customize_update_time" : "0000-00-00 00:00:00"
},
{
"id" : 10358,
"name_zh" : "来杯果汁",
"customize_update_time" : "0000-00-00 00:00:00"
},
{
"id" : 10362,
"name_zh" : "梦游先生",
"customize_update_time" : "2015-06-30 15:58:13"
},
{
"id" : 10363,
"name_zh" : "清凉方冰冰",
"customize_update_time" : "2015-06-30 16:04:56"
},
{
"id" : 10365,
"name_zh" : "嗜血狂鲨2",
"customize_update_time" : "2015-06-30 16:15:58"
},
{
"id" : 10367,
"name_zh" : "外星人爱牛奶",
"customize_update_time" : "2015-06-30 16:28:17"
}
]
}
取games的前3条数据:
> db.test1.find({"_id" : ObjectId("55dc145ef754a3342000002d")},{"games":{ "$slice":[0,3]}}).pretty()
{
"_id" : ObjectId("55dc145ef754a3342000002d"),
"games" : [
{
"id" : 1128,
"name_zh" : "追击野兽",
"customize_update_time" : "2015-05-18 00:00:00"
},
{
"id" : 3276,
"name_zh" : "dasda",
"customize_update_time" : "2015-05-15 00:00:00"
},
{
"id" : 3416,
"name_zh" : "围剿外星客",
"customize_update_time" : "2015-04-25 00:00:00"
}
]
}
取第四条到第6条数据:
> db.test1.find({"_id" : ObjectId("55dc145ef754a3342000002d")},{"games":{ "$slice":[3,3]}}).pretty()
{
"_id" : ObjectId("55dc145ef754a3342000002d"),
"games" : [
{
"id" : 10357,
"name_zh" : "合金弹头:防御",
"customize_update_time" : "0000-00-00 00:00:00"
},
{
"id" : 10360,
"name_zh" : "绿色忍者蛙年",
"customize_update_time" : "2015-06-30 15:52:10"
},
{
"id" : 10364,
"name_zh" : "杀死马里奥",
"customize_update_time" : "2015-06-30 16:08:09"
}
]
}
依次类推,即可。 "$slice":[3,3] 第一个3表示查询数组下标的起始位置,第二个3表示取的数据条数。建议games不要过多,不然会超出文档限制16M。不过这个可能是设计问题,我多想了。
第二种方法:就是用代码从数据库中取出来,将games里面的每一个子文档封装成model,放在缓存中做分页,而不是数据库级别的分页也可实现
第三种方法:从数据可看出games里面的子文档是按照id进行排序的,那么也就是说子文档是可比较的,那么就可以使用$gt和$lt,接合$size取数据,我没有试。你可以尝试一下。不过$slice获取数组子集更方便一点。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。