设为首页 加入收藏

TOP

MongoDB入门6――查询(二) (二)
2014-11-24 03:13:09 来源: 作者: 【 】 浏览:4
Tags:MongoDB 入门 查询
("4f071a10edb28db4864be584"), "fruit" : [ "apple", "banana", "peach" ] }
{ "_id" : ObjectId("4f071c5676285076f80ca7c7"), "fruit" : [ "apple", "banana" ] }
{ "_id" : ObjectId("4f071ce576285076f80ca7c9"), "fruit" : [ "banana", "apple" ] } 你可能会说,可以采用精确匹配整个数组的方法如下:


db.food.find({"fruit":["apple","banana"]});

db.food.find({"fruit":["apple","banana"]}); 得到的结果只有一个文档:


{ "_id" : ObjectId("4f071c5676285076f80ca7c7"), "fruit" : [ "apple", "banana" ] }

{ "_id" : ObjectId("4f071c5676285076f80ca7c7"), "fruit" : [ "apple", "banana" ] } 不用惊讶,这就是精确匹配,连apple和banana出现的顺序都不能调换。这种结果很显然不是很多时候我们想要的。也是为什么引进$all匹配操作符。

还有一种匹配的语法:可以使用key.index来匹配指定键对应值(是数组的情况下)的第index+1个元素值。还是上面水果的那个例子,我们假设要匹配fruit键对应值第三个元素为peach的文档,我们可以这么写:


db.food.find({"fruit.2":"peach"});

db.food.find({"fruit.2":"peach"}); 注意一点,数组下标是从0开始的。

如果我们需要匹配fruit键的值数组元素个数为3个的文档,可以使用$size匹配操作符:


db.food.find({"fruit":{"$size":3}});

db.food.find({"fruit":{"$size":3}}); 这样也可以将第一个文档匹配出来。但是特别需要注意,$size匹配符是不能和其他的查询条件共同使用的。比如你按照下面写是不会有结果的:


db.food.find({"fruit":{"$gt":{"$size":2}}});

db.food.find({"fruit":{"$gt":{"$size":2}}}); 这是不会匹配出fruit键的值数组元素个数大于2的文档。这样不会有任何查询结果的。



《MongoDB:The Definitive Guide》



摘自 wawlian说
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇PostgreSQL学习手册(角色和权限) 下一篇MySQL服务器的启动与停止

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·常用meta整理 | 菜鸟 (2025-12-25 01:21:52)
·SQL HAVING 子句:深 (2025-12-25 01:21:47)
·SQL CREATE INDEX 语 (2025-12-25 01:21:45)
·Shell 传递参数 (2025-12-25 00:50:45)
·Linux echo 命令 - (2025-12-25 00:50:43)