MongoDB命令行操作.doc_第1页
MongoDB命令行操作.doc_第2页
MongoDB命令行操作.doc_第3页
MongoDB命令行操作.doc_第4页
MongoDB命令行操作.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MongoDB命令行操作 本文专门介绍MongoDB的命令行操作。其实,这些操作在MongoDB官网提供的QuickReference上都有,但是英文的,为了方便,这里将其稍微整理下,方便查阅。 这里用来做测试的是远端(10.77.20.xx)的Mongo数据库。 1、登录和退出 mongo命令直接加MongoDB服务器的IP地址(比如:mongo10.77.20.xx),就可以利用Mongo的默认端口号(27017)登陆Mongo,然后便能够进行简单的命令行操作。至于退出,直接exit,然后回车就好了。 plain $ mongo 10.77.20.xx MongoDB shell version: 2.0.4 connecting to: 10.77.20.xx/test show collections exit bye 从以上可以看出,登录后mongo会自动连上一个名为test的数据库。如果这个数据库不存在,那么mongo会自动建立一个名为test的数据库。上面的例子,由于Mongo服务器上没有名为test的db,因此,mongo新建了一个空的名为test的db。其中,没有任何collection。2、database级操作 plain 2.1 查看服务器上的数据库 show dbs admin (empty) back_up (empty) blogtest 0.203125GB local 44.056640625GB test (empty) 2.2 切换数据库 切换到blogtest数据库(从默认的test数据库) use blogtest switched to db blogtest mongo中,db代表当前使用的数据库。这样,db就从原来的test,变为现在的blogtest数据库。 2.3 查看当前数据库中的所有集合 show collections book system.indexes user 2.4 创建数据库 mongo中创建数据库采用的也是use命令,如果use后面跟的数据库名不存在,那么mongo将会新建该数据库。不过,实际上只执行use命令后,mongo是不会新建该数据库的,直到你像该数据库中插入了数据。 use test2 switched to db test2 show dbs admin (empty) back_up (empty) blogtest 0.203125GB local 44.056640625GB test (empty) 到这里并没有看到刚才新建的test2数据库。 db.hello.insert(name:testdb) 该操作会在test2数据库中新建一个hello集合,并在其中插入一条记录。 show dbs admin (empty) back_up (empty) blogtest 0.203125GB local 44.056640625GB test (empty) test2 0.203125GB show collections hello system.indexes 这样,便可以看到mongo的确创建了test2数据库,其中有一个hello集合。 2.5 删除数据库 db.dropDatabase() dropped : test2, ok: 1 show dbs admin (empty) back_up (empty) blogtest 0.203125GB local 44.056640625GB test (empty) 2.6 查看当前数据库 db test2 可以看出删除test2数据库之后,当前的db还是指向它,只有当切换数据库之后,test2才会彻底消失。 3、collection级操作plain 3.1 新建collection db.createCollection(Hello) ok : 1 show collections Hello system.indexes 从上面2.4也可以看出,直接向一个不存在的collection中插入数据也能创建一个collection。 db.hello2.insert(name:lfqy) show collections Hello hello2 system.indexes 3.2 删除collection db.Hello.drop() true 返回true说明删除成功,false说明没有删除成功。 db.hello.drop() false 不存在名为hello的collection,因此,删除失败。 3.3 重命名collection 将hello2集合重命名为HELLO show collections hello2 system.indexes db.hello2.renameCollection(HELLO) ok : 1 show collections HELLO system.indexes 3.4 查看当前数据库中的所有collection show collections 3.5 建立索引在HELLO集合上,建立对ID字段的索引,1代表升序。 db.HELLO.ensureIndex(ID:1) 4、Record级的操作这一小节从这里开始,我们用事先存在的blogtest数据库做测试,其中有两个Collection,一个是book,另一个是user。4.1 插入操作 plain 4.1.1 向user集合中插入两条记录 db.user.insert(name:GalGadot,gender:female,age:28,salary:11000) db.user.insert(name:MikieHara,gender:female,age:26,salary:7000) 4.1.2 同样也可以用save完成类似的插入操作 db.user.save(name:Wentworth EarlMiller,gender:male,age:41,salary:33000) 4.2 查找操作 4.2.1 查找集合中的所有记录plain db.user.find() _id :ObjectId(52442736d8947fb501000001), name :lfqy, gender : male, age: 23, salary : 15 _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13 4.2.2 查找集合中的符合条件的记录plain (1)单一条件 a)Exact Equal: 查询age为了23的数据 db.user.find(age:23) _id :ObjectId(52442736d8947fb501000001), name :lfqy, gender : male, age: 23, salary : 15 b)Great Than: 查询salary大于5000的数据 db.user.find(salary:$gt:5000) _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 c)Fuzzy Match 查询name中包含a的数据 db.user.find(name:/a/) _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 查询name以G打头的数据 db.user.find(name:/G/) _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 (2)多条件与 查询age小于30,salary大于6000的数据 db.user.find(age:$lt:30,salary:$gt:6000) _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 (3)多条件或 查询age小于25,或者salary大于10000的记录 db.user.find($or:salary:$gt:10000,age:$lt:25) _id :ObjectId(52442736d8947fb501000001), name :lfqy, gender : male, age: 23, salary : 15 _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 4.2.3 查询第一条记录将上面的find替换为findOne()可以查找符合条件的第一条记录。plain 将上面的find替换为findOne()可以查找符合条件的第一条记录。 db.user.findOne($or:salary:$gt:10000,age:$lt:25) _id :ObjectId(52442736d8947fb501000001), name : lfqy, gender : male, age : 23, salary : 15 4.2.4 查询记录的指定字段plain 查询user集合中所有记录的name,age,salary,sex_orientation字段 db.user.find(,name:1,age:1,salary:1,sex_orientation:true) _id :ObjectId(52442736d8947fb501000001), name :lfqy, age : 23, salary : 15 _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, age : 28, salary :11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, age : 26, salary :7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, age : 41, salary: 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 注意:这里的1表示显示此列的意思,也可以用true表示。 4.2.5 查询指定字段的数据,并去重。plain 查询gender字段的数据,并去掉重复数据 db.user.distinct(gender) male, female 4.2.6 对查询结果集的操作plain (1)Pretty Print 为了方便,mongo也提供了prettyprint工具,db.collection.pretty()或者是db.collection.forEach(printjson) db.user.find().pretty() _id :ObjectId(52442736d8947fb501000001), name : lfqy, gender : male, age : 23, salary : 15 _id :ObjectId(52453cfb25e437dfea8fd4f4), name : Gal Gadot, gender : female, age : 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name : Mikie Hara, gender : female, age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name : Wentworth EarlMiller, gender : male, age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name : not known, sex_orientation : male, age : 13 (2)指定结果集显示的条目 a)显示结果集中的前3条记录 db.user.find().limit(3) _id :ObjectId(52442736d8947fb501000001), name :lfqy, gender : male, age: 23, salary : 15 _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 b)查询第1条以后的所有数据 db.user.find().skip(1) _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 c)对结果集排序 升序 db.user.find().sort(salary:1) _id :ObjectId(52442736d8947fb501000001), name :lfqy, gender : male, age: 23, salary : 15 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 降序 db.user.find().sort(salary:-1) _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52442736d8947fb501000001), name :lfqy, gender : male, age: 23, salary : 15 4.2.7 统计查询结果中记录的条数plain (1)统计集合中的所有记录条数 db.user.find().count() 5 (2)查询符合条件的记录数 查询salary小于4000或大于10000的记录数 db.user.find($or: salary: $lt:4000,salary: $gt:10000).count() 4 4.3 删除操作 4.3.1 删除整个集合中的所有数据plain db.test.insert(name:asdf) show collections book system.indexes test user 到这里新建了一个集合,名为test。 删除test中的所有记录。 db.test.remove() PRIMARY show collections book system.indexes test user db.test.find() 可见test中的记录全部被删除。 注意db.collection.remove()和drop()的区别,remove()只是删除了集合中所有的记录,而集合中原有的索引等信息还在,而drop()则把集合相关信息整个删除(包括索引)。 4.3.2 删除集合中符合条件的所有记录plain db.user.remove(name:lfqy) db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52455cc825e437dfea8fd4f8), name :2, gender : female, age: 28, salary : 2 _id :ObjectId(52455d8a25e437dfea8fd4fa), name :1, gender : female, age: 28, salary : 1 db.user.remove( salary :$lt:10) db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 4.3.3 删除集合中符合条件的一条记录plain db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52455de325e437dfea8fd4fb), name :1, gender : female, age: 28, salary : 1 _id :ObjectId(52455de925e437dfea8fd4fc), name :2, gender : female, age: 28, salary : 2 db.user.remove(salary :$lt:10,1) db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52455de925e437dfea8fd4fc), name :2, gender : female, age: 28, salary : 2 当然,也可以是db.user.remove(salary:$lt:10,true) 4.4 更新操作4.4.1 赋值更新db.collection.update(criteria, objNew, upsert,multi )criteria:update的查询条件,类似sqlupdate查询内where后面的objNew:update的对象和一些更新的操作符(如$,$inc.)等,也可以理解为sqlupdate查询内set后面的。upsert :如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。multi :mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 plain db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52455f8925e437dfea8fd4fd), name :lfqy, gender : male, age: 28, salary : 1 _id :ObjectId(5245607525e437dfea8fd4fe), name :lfqy, gender : male, age: 28, salary : 2 db.user.update(name:lfqy,$set:age:23,false,true) db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52455f8925e437dfea8fd4fd), name :lfqy, gender : male, age: 23, salary : 1 _id :ObjectId(5245607525e437dfea8fd4fe), name :lfqy, gender : male, age: 23, salary : 2 db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_orientation : male,age : 13, salary : 30000 _id :ObjectId(52455f8925e437dfea8fd4fd), name :lfqy, gender : male, age: 23, salary : 1 _id :ObjectId(5245607525e437dfea8fd4fe), name :lfqy, gender : male, age: 23, salary : 2 db.user.update(name:lfqy1,$set:age:23,true,true) db.user.find() _id :ObjectId(52453cfb25e437dfea8fd4f4), name :Gal Gadot, gender : female, age: 28, salary : 11000 _id :ObjectId(52453d8525e437dfea8fd4f5), name :Mikie Hara, gender : female,age : 26, salary : 7000 _id :ObjectId(52453e2125e437dfea8fd4f6), name :Wentworth Earl Miller, gender : male,age : 41, salary : 33000 _id :ObjectId(52454155d8947fb70d000000), name :not known, sex_or

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论