现在的位置: 首页 > 数据库 > 正文

在命令行客户端有哪些操作

2020年06月30日 数据库 ⁄ 共 1324字 ⁄ 字号 评论关闭

  NoSQL一词首先是Carlo Strozzi在1998年提出来的,指的是他开发的一个没有SQL功能,轻量级的,开源的关系型数据库。注意,这个定义跟我们现在对NoSQL的定义有很大的区别,它确确实实字如其名,指的就是“没有SQL”的数据库。不过,NoSQL的发展慢慢偏离了初衷,Carlo Strozzi也发觉,其实我们要的不是”no sql”,而应该是”no relational”,也就是我们现在常说的非关系型数据库了。下面学步园小编来讲解下MongoDB在命令行客户端有哪些操作?
  
  MongoDB在命令行客户端有哪些操作
  
  为什么NoSQL变得流行
  
  JavaEye上robbin的一篇文章(为什么要用非关系数据库?)很好地讨论了这个问题,这里只列出几个要点。
  
  对数据库的“三高”需求
  
  高并发读写
  
  对海量数据的高效率读写
  
  高扩展性和高可用性
  
  关系型数据库的特性地位下降
  
  事务一致性
  
  读写实时性
  
  复杂SQL,特别是多表关联查询
  
  What is MongoDB
  
  MongoDB是一个面向文档的数据库系统。使用C++编写,不支持SQL,但有自己功能强大的查询语法。MongoDB使用BSON作为数据存储和传输的格式。BSON是一种类似JSON的二进制序列化文档,支持嵌套对象和数组。MongoDB很像MySQL,document对应MySQL的row,collection对应MySQL的table。
  
  MongoDB在Windows上的安装运行很方便。直接下载、解压,然后运行 bin/mongod 即可启动服务器,运行 bin/mongo 即可运行命令行客户端。更多关于MongoDB的运行看这里。MongoDB命令行客户端的脚本语法有些类似MySQL的:
  
  在命令行客户端有哪些操作
  
  show dbs // 列出所有数据库
  
  use memo // 使用数据库memo。即使这个数据库不存在也可以执行,但该数据库不会立刻被新建,要等到执行了insert之类的操作时,才会建立这个数据库
  MongoDB在命令行客户端有哪些操作
  show collections // 列出当前数据库的collections
  
  db // 显示当前数据库
  
  show users // 列出用户
  
  MongoDB的查询语法很强大。例如,很多SQL可以做的,它都可以做:
  
  coll.find() // select * from coll
  
  coll.find().limit(10) // select * from coll limit 10
  
  coll.find().sort({x:1}) // select * from coll order by x asc
  
  coll.find().sort({x:1}).skip(5).limit(10) // select * from coll order by x asc limit 5, 10
  
  coll.find({x:10}) // select * from coll where x = 10
  
  coll.find({x: {$lt:10}}) // select * from coll where x <= 10      coll.find({}, {y:true}) // select y from coll      一些SQL不能做的,MongoDB也可以做:      coll.find({"address.city":"gz"}) // 搜索嵌套文档address中city值为gz的记录      coll.find({likes:"math"}) // 搜索数组      coll.ensureIndex({"address.city":1}) // 在嵌套文档的字段上建索引      索引:      coll.ensureIndex({productid:1}) // 在productid上建立普通索引      coll.ensureIndex({district:1, plate:1}) // 多字段索引      coll.ensureIndex({productid:1}, {unique:true}) // 唯一索引      coll.ensureIndex({productid:1}, {unique:true, dropDups:true|) // 建索引时,如果遇到索引字段值已经出现过的情况,则删      除重复记录      coll.getIndexes() // 查看索引      coll.dropIndex({productid:1}) // 删除单个索引      安全与认证(该版本的MongoDB仅支持很基本的安全策略):      use shine // 如果要root权限,就用admin库      db.addUser("username", "password") // 普通权限,可读写      db.addUser("username", "password", true) // 只可读,不可写      db.system.users.remove({user: username}) // 删除用户      数据导出、导入:      // json或csv格式,每次一个collection      mongoexport -d producttrade -c basic -o /home/data/mongo_backup/producttrade_100504.json      mongoimport -d producttrade -c basic --drop /home/data/mongo_backup/producttrade_100504.json      // 二进制数据格式,常用于备份、还原      mongodump -d shine -o /home/data/mongo_backup      mongorestore -d shine --drop /home/data/mongo_backup/shine      MongoDB in Java      到这里下一个MongoDB的Java驱动,把jar包扔到项目里去就行了。上面提到的通过脚本操作的功能,基本上都能在Java中找到实现。进行数据库连接的代码也十分简洁:      Mongo mongo = new Mongo();      db = mongo.getDB("shine");      coll = db.getCollection("producttrade");      DBCursor cur = coll.find();      // 对cur进行操作。。。      啰啰嗦嗦      每个BSON对象大小不能超过4MB。MongoDB使用GridFS来储存大文件。      字段名限制:不能以”$”开头;不能包含”.”;”_id”是系统保留的字段,但用户可以自己储存唯一性的数据在字段中。      MongoDB为每个数据库分配一系列文件。每个数据文件都会被预分配一个大小,第一个文件名字为”.0″,大小为64MB,第二个文件”.1″为128MB,依此类推,文件大小上限为2GB。      MongoDB没有新建数据库或者collection的命令,只要进行insert或其它操作,MongoDB就会自动帮你建立数据库和collection。当查询一个不存在的collection时也不会出错,Mongo会认为那是一个空的collection。      一个对象被插入到数据库中时,如果它没有ID,会自动生成一个”_id”字段,为24位16进制数。      Java中,Mongo对象是线程安全的,一个应用中应该只使用一个Mongo对象。Mongo对象会自动维护一个连接池,默认连接数为10。      以上就是关于“MongoDB在命令行客户端有哪些操作”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.