设为首页 加入收藏

TOP

MongoDB查询(上)(二)
2014-11-23 20:11:56 来源: 作者: 【 】 浏览:54
Tags:MongoDB 查询
创建索引.所以这种类型的查询非常高效.
正则表达式也可以匹配自身
db.users.find({"name":/refact/})
可以查出name为/refact/的文档.
www.2cto.com
7.查询数组
数组很大多数情况下可以这样理解:每一个元素都是整个键的值.


db.users.findOne({"userName":"refactor","emails":"295240648@qq.com"})能匹配到
使用"$all"
如果需要多个元素来匹配数组,就要用"$all"
db.users.insert({"userName":"refactor",emails:["295240648@qq.com","295240648@163.com","295240648@126.com"]})
db.users.insert({"userName":"refactor",emails:["295240648@qq.com","295240648@126.com","295240648@111.com"]})
db.users.insert({"userName":"refactor",emails:["295240648@126.com","295240648@163.com","295240648@111.com"]})
要找到邮箱有"295240648@163.com"又有"295240648@126.com",顺序无关紧要的文档
db.users.find(
  {
    "emails":
    {
      "$all":
      [
        "295240648@163.com",
        "295240648@126.com"
      ] www.2cto.com
    }
  }
)
要是只对一个元素的数组使用"$all"就和不用"$all"是一样的,如
db.users.find({"emails":{"$all":["295240648@126.com"]}})
db.users.find({"emails":"295240648@126.com"})
效果是一样的.
也可以精确的匹配数组
db.users.find({"userName":"refactor",emails:["295240648@qq.com","295240648@163.com","295240648@126.com"]})
若想查询数组指定位置的元素,需要使用key.index语法指定下标
db.users.find({"emails.1":"295240648@163.com"})
使用"$size"
"$size"可以查询指定长度的数组
查询数组长度为3的数组
db.users.find({"emails":{"$size":3}})
常见的查询是数组长度范围的查询."$size"并不能与其他查询子句组合(如:"$gt"),但是这种查询可以通过
在文档中添加一个"size"键的方式来实现.这样每一次向指定数组添加元素的时候,同时增加"size"值.原来这样
的更新:
db.users.update({"$push":{"emails":"295240648@139.com"}})
变成这样的更新: www.2cto.com
db.users.update({"$push":{"emails":"295240648@139.com"},"$inc":{"size":1}})
这样就可以这样查询了
db.users.find({"size":{"$gt":3}})
使用"$slice"查询
find的第二个参数是可选的,可以指定返回那些键,"$slice"返回数组的一个子集合
返回emails数组的前两个元素
db.users.find({"userName":"refactor"},{"emails":{"$slice":2}})
返回emails数组的后两个元素
db.users.find({"userName":"refactor"},{"emails":{"$slice":-2}})
返回emails数组的第2个和第11个元素.如果数组不够11个,则返回第2个后面的所有元素
db.users.find({"userName":"refactor"},{"emails":{"$slice":[1,10]}})
"$slice"默认将返回文档中的所有键.
作者 refactor
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ORACLE毫秒与日期的相互转换 下一篇IMP-00010:不是有效的导出文件,..

评论

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