注意:作者使用的mongodb版本为2.4.7。
首先插入测试数据
复制代码 代码如下:
db.data.insert({name:'a', num:[12,123,22,34,1]});
db.data.insert({name:'b', num:[42,22]});
db.data.insert({name:'c', num:[49]});
键num对应的值是数组。
查询num的数组值具有指定大小的document
最好的方法是使用$size,例如指定大小为2,可以:
复制代码 代码如下:db.data.find({num:{$size:2}})
不过$size有一个缺陷,就是无法查询某个范围的大小,例如下面的语句是无法按照预期运行的:
复制代码 代码如下:db.data.find({num:{$size:{$gt:2}}}); //错误
官方文档中建议,如果需要查询的数组大小在某个范围,可以另外为每个文档添加一个键来保存当前数组的大小。
如果数组大小是某个范围
另外两种思路,第一个思路是使用$where,例如如果要求数组大小小于3:
复制代码 代码如下:db.data.find({ $where: "this.num.length < 3" })
这种方法具有很大的灵活性,但是速度会慢一些。
关于$where,请参考官方文档:http://docs.mongodb.org/manual/reference/operator/query/where/。
另外一个比较高效的方法是判断数组中的某个指定索引的元素是否存在,例如如果要求数组大小小于3:
复制代码 代码如下:db.data.find({ "num.2": {$exists:0} })
数组大小小于3,就意味着num[2]不存在。
如果要求数组大小大于3,可以:
复制代码 代码如下:db.data.find({ "num.3": {$exists:1} })
MongoDB,数组查询
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- faker大魔王称号怎么来的 faker大魔王称号来源介绍
- PS5 Pro上的蒂法更美了!博主盛赞新机1000%值得购买
- 腾讯互娱再离职一员大将!或因供应商贪腐
- Ayaneo3游戏掌机预热:旗舰定位、造型圆润自带底键
- 动力火车.1999-背叛情歌【上华】【WAV+CUE】
- 刘力扬.2019-Neon.Lit虹【摩登天空】【FLAC分轨】
- 群星.2002-恋爱物语情歌对唱精选2CD(引进版)【滚石】【WAV+CUE】
- 群星《闽南情24K德国HD金碟》2CD[WAV+CUE]
- 周传雄《恋人创世纪》环球唱片[WAV+CUE]
- 关淑怡-《真假情话K2HD》(日本压制)【WAV+CUE】
- 王菲 -《Faye Wong》雨果LPCD45 [WAV+分轨][1G]
- 陈百强《世纪10星·永恒篇》环球[WAV+CUE][1G]
- 陈奕迅《黑·白·灰》台湾版[WAV+CUE][400M]
- 张尕怂.2024-甘肃娃娃【FLAC分轨】
- 张惠妹.2011-A.MEI.ACOUSTIC.BEST.2CD【丰华】【WAV+CUE】