日期:2014-05-16  浏览次数:20455 次

MongoDB学习 (六):查询

本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html??欢迎转载 ,请保留此链接??? ????!

本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操作。

目录

  • 查询操作

  1. 集合查询方法 find()
  2. 查询内嵌文档
  3. 查询操作符(内含 数组查询)
    • "$gt" 、"$gte"、 "$lt"、 "$lte"、"null查询"、"$all"、"$size"、"$in"、"$nin"、
    • "$and"、"$nor"、"$not"、"$or"、"$exists"、"$mod"、"$regex"、"$where"、"$slice"、"$elemMatch"

?


?

1.1 集合查询方法 find()

db.collection.find() ?查询集合中文档并返回结果为游标的文档集合。

语法:db.collection.find(query, projection)
参数?     类型?    描述?
query	    文档	  可选. 使用查询操作符指定查询条件
projection    文档	 ?可选.使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略).

返回值: 匹配查询条件的文档集合的游标. 如果指定投影参数,查询出的文档返回指定的键?,"_id"键也可以从集合中移除掉。 
注意:在mongo shell中我们不需要JavaScript游标处理方法就可以直接访问作为查询结果的文档集合。mongo shell默认返回游标中的前20条文档。当执行查询操作时,mongo shell直接自动的对游标执行迭代操作并显示前20条文档。输入"it"显示接下来的20条文档。

find的第一个参数是查询条件,其形式也是一个文档,决定了要返回哪些文档,空的査询文档{}会匹配集合的全部内容。要是不指定査询文档,默认就是{},如同SQL中"SELECT * FROM TABLENAME"语句。

//将返回集合中所有文档
db.collection.find()
//或者
db.collection.find({})

第一个参数若为键/值对时,查询过程中就意味着执行了条件筛选,就如同我们使用Linq查询数据库一样。下面查询操作将返回user集合中age键值为16的文档集合。

//mongo db
db.user.find({age:16})

//Linq to sql
dbContext.user.select(p=>p.age==16)

上面的查询默认执行“==”操作(就如同linq中 p.age==16),文档中若存在相同键的值和查询文档中键的值相等的话,就会返回该文档。

第一个参数若包含多个键/值对(逗号分隔),则相当于查询AND组合条件,“条件1 AND条件2 AND…AND 条件N".例如查询年龄为28且性别为男性的文档集合:

//mongo db
db.user.find({age:28,sex:"male"