这一个记录
{ “_id” : ObjectId(“56bb7aafa1164ef44e000029”), “qishu” : 21, “shuzi” : [ 69, 15, 86, 40, 20, 67, 46, 13, 36, 23, 33, 26, 9, 49, 81, 96, 65, 31, 52, 75, 99, 6, 39, 74, 47, 42, 1, 94, 82, 91, 5, 27, 30, 28, 7, 90, 34, 37, 79, 70, 18, 87, 57, 59, 45, 63, 24, 76, 100, 50, 41, 62, 64, 98, 8, 66, 14, 61, 54, 32, 17, 29, 55, 56, 3, 58, 84, 4, 21, 48, 68, 92, 53, 10, 93, 85, 12, 51, 77, 43, 25, 2, 19, 80, 73, 72, 22, 97, 88, 71, 35, 11, 16, 78, 95, 60, 44, 89, 83, 38 ] }
> db.fenshuhaoma.find({qishu:21});
我在PHP里,查找 $mong->find(array(‘qishu’=>21)); 找到对象后,在foreache,然后在得到 shuzi的数组,然后在从shuzi数组里,获取第5个到第(8)个,也就是 shuzi数组里的下标为5到13的值 [‘shuzi’][5] – [‘shuzi’][5+8=13]
不知道如何表达这个查询,如果是mysql的查询的话就是 select * from db where qishu=22 and shuzi>5 and shuzi<13
现在我的做法就是吧所有查询出来,然后在遍历获得,这样来做,感觉需要很多内存来进行查询,在频繁查询时,就慢了.
我应该怎么来写这个查询.获取出来的就是直接 ['shuzi'][5] – ['shuzi'][5+8=13] 范围.
使用PHP,该怎么来写这个查询?