赞
踩
① find简介
- # 语法:
- db.stu.find({查询条件})


② 指定需要返回的键(注意:_id是默认返回的,即使不指定)
- # 语法:
- db.stu.find({查询条件}, {指定要返回哪些键})


③ 查询条件(范围查询,或查询,取反)
⑴ 比较操作符:"$gt", "$gte", "$lt", "$lte", "$ne"就是全部的比较操作符,分别对应,>, >=, <, <=, !=, 当然也可以将其中几个组合起来使用
例1:查询_id值大于2小于5的文档

例2:查询_id值不等于3的文档

⑵ mongoDB中有两种方式进行OR查询,"$in" 可以用来查询一个键的多个值;"$or"更通用一些,可以在多个键中查询任意的给定值
例1:查询name值为paul或者为wang的文档("$in")

例2:查询name值不为paul或者不为wang的文档("$nin")(和"$in"是相对的,相当于互相取反)

注意:"$in"是非常灵活的,可以指定不同的条件和值,比如说如果一个文档在做将文档的id值转换为其name值得过程中,这时不确定其_id是1还是"paul",那么可以使用下面的方式来查询
例3: 查询_id值为1或者为paul的文档

上面我们提到有两种方式可以做OR判断,那么现在就要使用"$or","$or"和"$in"一样,都是接受一个数组,但是"$in"接受一个条件数组
例4:查询name为wang或者score为90的文档($or)

⑶ 取反,"$not"是元条件句,可以用在任何其他条件之上
例:查询name不为wang或者zhou的值

④ 特定类型查询(null值如何查询)
⑴ 特殊值null
我们知道mongodb文档可以包含多种类型的数据,但是null值在查询中会有特殊的表现,其不仅会返回某个键为null的文档,还会返回不存在该键的文档
例:查询age值为null的文档
如果我们像以往一样查询如下,会返回所有满足条件的结果,还会返回不存在该键的结果(这显然不是我们想要的)

那么如果要查询age为null的文档该怎么办呢?????
不仅要检查该键的值为null,还要判断该键是否存在!!!!!!!

上面使用$in看上去有点令人费解,我们还可以使用$eq,如下

⑤ 查询数组
⑴ 查询数组元素
查询数组元素和查询标量是一样的
例:查询hobby对应数组中有game的集合(和查询hobby键对一个某个值的操作一样)

⑵ 通过多个元素匹配数组 $all
例: 查询hobby对应数组中有meat和fruit的集合

⑶ 查询数组特定位置的元素所对应的集合(下标也是从0开始)
例:查询hobby集合中第1个元素为fruit的集合

⑷ 查询数组长度
例: 查询hobby多对应数组长度为3的集合

⑥ 查询内嵌文档 (.语法)
例:查询msg中addr的值为456的文档

⑦ 限制返回结果(limit)
例:查询所有结果返回三个

⑧ 略过xx过(skip)
例:查询所有并略过前3个

注意:略过数据过多的话会影响性能
那么如何解决这种问题呢:
1,以某个键排序,查询第一页的数据
2,后续查询条件则使用第一页最后一个文档的排序键值为条件进行查询
⑨ 指定键排序(可以指定多个)
例:查询所有文档,并以name值正序排列(正序1,倒叙-1)

注意:有时候一个键对应的值是多种类型,这时如果对其进行排序,其排序顺序是预先定义好的:
最小值 < nul l< 数字 < 字符串 < 对象/文档 < 数组 < 二进制数据 < 对象ID < 布尔值 < 日期型 < 时间戳 < 正则表达式 < 最大值
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。