你的位置:首页 > 数据库

[数据库]MongoDB初探(二)


mongoDB的一个简便的地方就是可以用js语言进行操作。


 

首先在启动了数据仓库后新开一个cmd窗口来连接数据库,默认连接的数据库是test

      mongo localhost:27017 

       

    接下来在这个窗口中就可以操作数据库了。

    查看数据仓库中的所有数据库命令:  show dbs 

    切换当前使用的数据库 命令:  use 名称 

    删除当前数据库的命令:  db.dropDatabase() 

      

    查看当前使用的是哪个数据库的命令:  db 

    接下来就是建立集合(collection) 相当于关系型数据库中的表不过由于是nosql存储的是key-value所以并不需要固定字段。

    显式建立集合命令:  db.createCollection(“person”) 

    隐式创建:隐式创建就是在创建集合的同时往集合里面添加数据


CRUD操作:

  1>插入操作 

    插入数据: db.集合名称.insert({}) 

    

    批量插入数据:由于mongo支持js所以我们可以很轻易的批量插入N条数据:

    for(var i=1;i<=100;i++){     db.person2.insert({name:"user"+i,age:i})     }

  2>查询操作

      查找所有数据:  db.集合名称.find()

        

      查找集合中的第一条数据: db.集合名称.findOne()

             

      按条件查找数据:db.集合名称.find({条件})

         

      查询集合中的文档,返回某些特定的键值: db.集合名称.find({查询条件},{返回值条件})   由于mongo使用c++编写的非关系型数据库所以一般0:false  1:true

        查询数据,只返回 age字段: 

          

        查询数据,返回除age外的其他字段:

          

      查询时使用条件表达式:(<,<=,>,>=,!=)

        //字段 >value        db.集合名称.find({字段名:{$gt:value}})        //字段 <value        db.集合名称.find({字段名:{$lt:value}})        //字段 >=value        db.集合名称.find({字段名:{$gte:value}})        //字段 <=value        db.集合名称.find({字段名:{$lte:value}}) 

      排序(sort)、分页(skip,limit)

         skip(2).limit(3) 从第二条开始,共返回3条   | sort({age:1}); 降序-1

       $all主要用来查询数组中的包含关系,查询条件中只要有一个不包含就不返回
                $in,类似于关系型数据库中的IN | $nin,与$in相反
            

      $or,相当于关系型数据库中的OR,表示或者的关系,例如查询name为user2或者age为13的文档,命令为: db.person.find({$or:[{name:”user2”},{age:13}]}) 
      $nor,表示根据条件过滤掉某些数据,例如查询name不是user2,age不是13的文档,命令为: db.person.find({$nor:[{name:”user2”},{age:13}]})  
      $exists,用于查询集合中存在某个键的文档或不存在某个键的文档,例如查询customer集合中存在name键的所有文档,可以使用  db.person.find({name:{$exists:1}})   $exists:1表示真,指存在,$exists:0表示假,指不存在,
      
     类似于关系型数据库,mongodb中也有游标的概念
          

  3>更新操作

      db.person.update(criteria,objNew,upsert,multi) 

      参数说明:

      criteria:用于设置查询条件的对象

      objNew:用于设置更新内容的对象

      upsert:如果记录已经存在,更新它,否则新增一个记录,取值为0或1

      multi:如果有多个符合条件的记录,是否全部更新,取值为0或1

       

  4>删除操作

         db.集合名称.remove({条件})