MongoDB命令行操作(上)

来源:互联网 发布:淘宝网广告形式 编辑:程序博客网 时间:2024/06/05 00:14

本文专门介绍MongoDB的命令行操作,分上,下两篇(其实本来是一篇,后来太长,于是拆之)。下篇介绍Record级别的操作,上篇介绍除Record以外的操作,如对database和collection的操作等。

其实,这些操作在MongoDB官网提供的Quick Reference上都有,但是英文的,为了方便,这里将其稍微整理下,方便查阅。

这里用来做测试的是远端(10.77.20.xx)的Mongo数据库。

1、登录和退出

mongo命令直接加MongoDB服务器的IP地址(比如:mongo 10.77.20.xx),就可以利用Mongo的默认端口号(27017)登陆Mongo,然后便能够进行简单的命令行操作。

至于退出,直接exit,然后回车就好了。

$ mongo 10.77.20.xxMongoDB shell version: 2.0.4connecting to: 10.77.20.xx/test> show collections> exitbye
从以上可以看出,登录后mongo会自动连上一个名为test的数据库。如果这个数据库不存在,那么mongo会自动建立一个名为test的数据库。上面的例子,由于Mongo服务器上没有名为test的db,因此,mongo新建了一个空的名为test的db。其中,没有任何collection。

2、database级操作

2.1 查看服务器上的数据库> show dbsadmin(empty)back_up(empty)blogtest0.203125GBlocal44.056640625GBtest(empty)2.2 切换数据库切换到blogtest数据库(从默认的test数据库)> use blogtestswitched to db blogtestmongo中,db代表当前使用的数据库。这样,db就从原来的test,变为现在的blogtest数据库。2.3 查看当前数据库中的所有集合> show collectionsbooksystem.indexesuser2.4 创建数据库mongo中创建数据库采用的也是use命令,如果use后面跟的数据库名不存在,那么mongo将会新建该数据库。不过,实际上只执行use命令后,mongo是不会新建该数据库的,直到你像该数据库中插入了数据。> use test2switched to db test2> show dbsadmin(empty)back_up(empty)blogtest0.203125GBlocal44.056640625GBtest(empty)到这里并没有看到刚才新建的test2数据库。> db.hello.insert({"name":"testdb"})该操作会在test2数据库中新建一个hello集合,并在其中插入一条记录。> show dbsadmin(empty)back_up(empty)blogtest0.203125GBlocal44.056640625GBtest(empty)test20.203125GB> show collectionshellosystem.indexes这样,便可以看到mongo的确创建了test2数据库,其中有一个hello集合。2.5 删除数据库> db.dropDatabase(){ "dropped" : "test2", "ok" : 1 }> show dbsadmin(empty)back_up(empty)blogtest0.203125GBlocal44.056640625GBtest(empty)2.6 查看当前数据库> dbtest2可以看出删除test2数据库之后,当前的db还是指向它,只有当切换数据库之后,test2才会彻底消失。

3、collection级操作

3.1 新建collection> db.createCollection("Hello"){ "ok" : 1 }> show collectionsHellosystem.indexes从上面2.4也可以看出,直接向一个不存在的collection中插入数据也能创建一个collection。> db.hello2.insert({"name":"lfqy"})> show collectionsHellohello2system.indexes3.2 删除collection> db.Hello.drop()true返回true说明删除成功,false说明没有删除成功。> db.hello.drop()false不存在名为hello的collection,因此,删除失败。3.3 重命名collection将hello2集合重命名为HELLO> show collectionshello2system.indexes> db.hello2.renameCollection("HELLO"){ "ok" : 1 }> show collectionsHELLOsystem.indexes3.4 查看当前数据库中的所有collection>show collections3.5 索引操作在HELLO集合上,建立对ID字段的索引,1代表升序。>db.HELLO.ensureIndex({ID:1})在HELLO集合上,建立对ID字段、Name字段和Gender字段建立索引>db.HELLO.ensureIndex({ID:1,Name:1,Gender:-1})查看HELLO集合上的所有索引>db.HELLO.getIndexes()删除索引用db.collection.dropIndex(),有一个参数,可以是建立索引时指定的字段,也可以是getIndex看到的索引名称。>db.HELLO.dropIndex( "IDIdx" )>db.HELLO.dropIndex({ID:1})3.6 为集合中的每一条记录添加一个字段为user集合中的每一条记录添加一个名为ex的字段,并赋值为barrymoredb.user.update({},{$set:{"ex":"barrymore"}},false,true)3.7 重命名字段将集合中的所有记录的gender字段的名字修改为sexdb.user.update({},{$rename:{"gender":"sex"}},false,true)3.8 删除字段删除集合中所有记录的ex字段db.user.update({},{"$unset":{"ex":1}},false,true)

上面的操作中用到了一个比较常用的update方法,其参数格式如下:

db.collection.update(criteria, objNew, upsert, multi )
criteria:update的查询条件,类似sql update查询内where后面的
objNew:update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的。
upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。

原创粉丝点击