MongoDB(一)---基础命令
> show dbs -- 查看数据库列表
> use admin --创建admin数据库,如果存在admin数据库则使用admin数据库
> db ---显示当前使用的数据库名称
> db.dropDatabase() --删当前使用的数据库
> db.version() --当前数据库版本
> db.getMongo()
--查看当前数据库IP+端口号。
> show collections --查看数据库中有那些个集合(表)
> db.dropDatabase() --删除当前数据库
> db.user.drop() --删除当前集合(表)user
> db.user.insert({"userid":1,success:true,"time":Date()}) ---如果有user集合,则插入数据,没有,
则创建user集合(userid为int类型,seccess为Boolean类型,time为日期类型。
并且,mongodb中的key,不加双引号也可以,在入库后,会自动加上双引号,如success)
> db.user.find({}) --查寻user集合所有数据,如下有个截图,很好说明find用法。
例如:db.user.find({$or:[{"name":lili},{"age":18}]})
,查寻name=lili或者age=18的用户。
> db.user.insert([{"_id" :6, "grades" : [ 80, 85, 90 ],"score":[10,40,54]}, {"_id" :7, "grades" : [ 88, 90, 92 ],"score":[100,30,51]}]); //一次插入两个文档(即两行)
关于_id:MongoDB中保留关键字,如果插入记录的记录中没有_id,数据库自动生成,如果有,刚使用记录中的_id
> db.students.update({'_id':7},{$set:{'score':[]}}) --更新id=7的这第记录,并把score的值更新为一个空数组。
update详细语法:update() 方法用于更新已存在的文档。语法格式如下:db.collection.update(<query>,<update>,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>})参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
注意:3.2版本后,提供了,db.user.updateOne({})与db.user.updateMany({})方法,更新一条与多条。
> db.user.remove({}) --删除user集合中所有数据。
remove详细语法:
db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>})
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
writeConcern :(可选)抛出异常的级别。
注意:3.2版本后,提供了,db.user.removeOne({})与db.user.removeMany({})方法,删除一条与多条。
> db.user.find({"name":“lili”},{"age":1,"_id":0}).limit(2),skip(3) --查寻出name=lili的所有数据,并且结果集中,只显示age,_id无需显示,最后,跳过(skip)三行后,对其结果,只(limit)显示两行数据 ,(0表示不显示
1表示显示)。
例如:插入如下数据:
db.user.insert([
{"name":"lili","age":10},
{"name":"lili","age":11},
{"name":"lili","age":12},
{"name":"lili","age":13},
{"name":"lili","age":14},
{"name":"lili","age":15},
{"name":"lili","age":16}
])
查寻结果为:{“age”:13.0}{"age":14.0}
> db.user.find({"age" : {$type : 2}}) --查寻user集合中,年龄字段为String的结果。(2=String),使用$type:2
> db.user.find({}).sort({"age":1}) --对age按升序排列(1 为升序排列,而-1是用于降序排列) -当查询时同时使用sort,skip,limit,无论位置先后,最先执行顺序 sort再skip再limit
> db.user.ensureIndex({"name":1,"age":-1}) --设置name字段按升序创建索引,设置age字段按降序创建索引,关系型数据库中称作复合索引
> db.user.count() --查寻user集合中总共有多少条文档,及关系行数据库中表中有多少row。
> db.user.aggregate([{$group:{_id:'$name',total:{$sum:"$age"}}}]) --对键name取出对应Value值后分组,然后对键age取出Value值后相加,当_id=null时,不进行分组,此时类似sql中的:select count(*) as total from user.
> mongodump -h 192.168.1.100 -d test -o /home/bobo/ --(进入mongo安装目录),备份ip地址为192.168.1.100的mongo中test数据库中的数据,数据放到/home/bobo/目录下。
> mongorestore -h 192.168.1.100:27017 -d test /home/bobo/ --恢复数据。