1、find函数的介绍和使用
MongoDB数据查询使用find函数,其功能与SQL中的select函数相同,可提供与关系型数据库类似的许多功能,包括映射、排序等。
db.集合名.find(query,fields,limit,skip)
query指查询条件,相当于SQL中的where语句。
例如: db.student.find({name:"joe","age":{$lt:22}})
fields用于字段映射(projection)语法格式:{field:0}
例如:db.student.find({"age":{$lt:22}},{"_id":0,"name":1})
limit用于限制查询结果集的文档数量。
skip用于跳过一定数据量的结果,设置第一条返回文档的偏移量。
需要注意:
不支持多集合间的连接查询,find函数一次查询只能针对一个集合。
find函数参数为空或者查询条件为空文档时,会返回集合中的所有文档,例如:db.student.find() 或 db.student.find({})
除了将limit和skip作为find函数的参数外,还可以单独使用limit和skip函数来修饰查询结果。
查询结果默认是无序的,如果需要对结果进行排序,可以使用sort函数。
findOne()只会返回第一条数据。
当查询的结果文档数量很大时,为了加快数据查询的速度可以创建索引。
除了使用find函数实现基本查询外,MongoDB还提供了聚合框架,用于复杂查询。
2、比较查询符
$eq/$ne 等于/不等于
$gt/$gte 大于/大于等于
$lt/$lte 小于/小于等于
$in/$nin 包含/不包含
3、逻辑查询操作符
可连接多个查询条件,用于逻辑与、或、非以及取反操作。
$and 与
$or 或
$nor 非
$not 取反
4、元素查询操作符
$exits 按照字段是否存在来查询文档
$type 选择字段值为指定的BSON数据类型编号的文档
$where操作符功能强大且灵活,它可以将JavaScript表达式的字符串或JavaScript函数作为查询语句的一部分。在JavaScript表达式和函数中,可以使用this或obj来引用当前操作的文档。
例如: db.collection.find({ $where:"this.credits==this.debits"})
JavaScript表达式或函数返回true时,才会返回当前文档。
查询时,$where 操作符不能使用索引,每个文档需要从BSON对象转换成JavaScript对象后,才能通过$where表达式来运行。因此,它比常规查询要慢很多,一般情况下要避免使用$where查询。