MongoDB数据查询使用find函数,其功能与SQL中的select函数相同,可提供与关系型数据库类似的许多功能,包含映射、排序等。



find函数语法


>db.COLLECTION_NAME.find(query,fields,limit,skip)

find() 方法以非结构化的方式来显示所有文档。



如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:

>db.COLLECTION_NAME.find().pretty()


pretty() 方法以格式化的方式来显示所有文档。


参数说明:


  • query:指明查询条件,相当于SQL中的where语句
  • fields:用于字段映射,指定是否返回该字段,0代表不返回,1代表返回
  • limit:限制查询结果集的文档数量,指定查询返回结果数量的上限
  • skip:跳过一定数据量的结果,设置第一条返回文档的偏移量


  • MongoDB不支持多集合间的连接查询,find函数一次查询只能针对一个集合
  • find参数为空或者查询条件为空文档时,会返回集合中的所有文档
  • 除了将limit和skip作为find函数的参数外,还可以单独使用limit和skip函数来修饰查询结果
  • 返回的查询结果集默认情况下是无序的,如果需要对结果进行排序,可以使用sort函数
  • db.collection.findOne()只会返回第一条数据
  • 当查询的集合文档数量很大时,为了加快数据的查询速度可以创建索引
  • 除了使用find函数实现基本查询外,MongoDB还提供了聚合框架,用于复杂查询



find函数实例



编写js脚本


// 连接数据库
      
      var db =  connect("localhost:27017/test");
      
      // 得到待操作的数据库
      
      //var db = dbService.getSiblingDB("test");
      
      // 如果col集合存在则删除
      
      db.col.drop();
      
      //创建bulk对象用于批量插入
      
      var bulk = db.col.initializeUnorderedBulkOp();
      
       
      
      // 测试数据
      
      var doc1 = {
      
                    name:"joe",
      
                    age:20
      
                 }
      
      bulk.insert(doc1);
      
       
      
      var doc2 = {
      
                    name:"joe",
      
                    age:31
      
                 }
      
      bulk.insert(doc2);
      
       
      
      var doc3 = {
      
                    name:"jack",
      
                    age:21
      
                 }
      
      bulk.insert(doc3);
      
       
      
      var doc4 = {
      
                    name:"John",
      
                    age:null
      
                 }
      
      bulk.insert(doc4);
      
       
      
      //执行插入操作
      
      bulk.execute();
      
       
      
      print("========find - 基本使用=======");
      
      /*
      
         db.集合名.find( query , fields , limit , skip)
      
      */
      
      var cursor = db.col.find(
      
                      {},              //查询条件
      
                     { _id:0,age:1},    //字段映射
      
                     2,                 //返回结果条数
      
                      1)
      
      				.sort({age:1});  //跳过文档条数   结果按照年龄升序排列
      
      printjson(cursor.toArray());
      
       
      
      print("====下面使用方法,效果一样===");
      
      var cursor = db.col.find(
      
                      {},                //查询条件
      
                      { _id:0,age:1}     //字段映射
      
                      ).limit(2).skip(1).sort({age:1}) 
      
      printjson(cursor.toArray())


mongo --quiet find.js


========find - 基本使用=======
    
    [ { "age" : 20 }, { "age" : 21 } ]
    
    ====下面使用方法,效果一样===
    
    [ { "age" : 20 }, { "age" : 21 } ]