MongoDB中使用find来进行查询,查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合。find的第一个参数决定了要返回哪些文档。空的查询文档{}会匹配集合的全部内容,要是不指定查询文档,默认就是{}。
MongoDB查询使用上还是有些限制的,数据库所关系的查询文档的值必须是常量,也就是不能引用文档中其它键的值。
查询条件 "$lt"、"$lte"、"$gt"、"$gte"、"$ne"就是全部的比较操作符,分别对应<、<=、>和>=与"不相等";
"$in" 用来查询键值在某个范围内值 "$nin" 用来查询键值不在某个范围内的值
"$or" 接受一个包含所有可能条件的数组作为参数
"$mod" 取模运算符,会将查询的值除以第一个给定值,若余数等于第二个给定值则返回该结果
"$not" 查询与特定模式不符的文档
一个键可以有多个条件,但一个键不能对应多个更新修改器
null不仅仅匹配自身而且匹配“不存在的”,这种匹配还会返回缺少这个键的所有文档
如果仅仅想要匹配键值为null的文档,既要检查该键的值是否为null,还要通过“$exists”条件判断键值是否存在
MongoDB使用Perl兼容的正则表达式(PCRE)库来匹配正则表达式,PCRE支持的正则表达式语法都能被MongoDB接受,在使用正则表达式前,可以现在JavaScrip shell中检查一下语法
如果需要通过多个元素来匹配数组,就要使用"$all"
“$size”可以用其查询指定长度的数组
“$slice”返回数组的一个子集合,可以接受偏移值和要返回的元素的数量,除非特别声明,否则返回文档中的所有键
查询内嵌文档有两种方法:查询这个文档,或只针对其键/值对进行查询
查询整个文档要求结构与原数据完全匹配(包括顺序一样)
"$elemMatch"将限定条件进行分组,仅当对一个内嵌文档的多个键操作时才会用到,结果返回满足条件的所有文档
"$where"可以执行任意JavaScript作为查询的一部分,是的查询几乎能做任何事情,但是不是必要时要避免使用"$where"查询,因为它在速度上要比常规查询慢很多,每个文档都要从BSON转为JavaScript对象,然后通过"$where"的表达式来运行,同样还不能使用索引