基础语法和命令(相当于关系型数据库里的sql)
操作数据库
“show dbs” 命令可以显示所有数据的列表。
执行 “db” 命令可以显示当前数据库对象或集合。
运行”use”命令,可以连接到一个指定的数据库。
以上实例命令中,”local” 是你要链接的数据库。
特殊数据库
- admin: 从权限的角度来看,这是”root”数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
- local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
- config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。
连接
连接本地数据库服务器,端口是默认的。
使用用户名username,密码password登录localhost的admin数据库。mongodb://localhost//若连接时不指定数据库,则默认打开 test 数据库。
使用用户名username,密码password登录localhost的baz数据库。mongodb://username:password@localhost//admin数据库可省略不写
mongodb://username:password/baz
创建数据库
MongoDB 创建数据库的语法格式如下:如果数据库不存在,则创建数据库,否则切换到指定数据库。
以下实例我们创建了数据库 hello:use DATABASE_NAME
我们刚创建的数据库 hello并不在数据库的列表中, 要显示它,我们需要向 hello 数据库插入一些数据use helo//创建或者进入指定数据库db//查看当前数据库show dbs//查看所有数据库
db.hello.insert({"name":"jyy"})//集合只有在内容插入后才会创建!//就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。//如果你没有创建新的数据库,集合将存放在 test 数据库中。
删除数据库
删除数据库
MongoDB 删除数据库的语法格式如下:
以下实例我们删除了数据库 hello。db.dropDatabase()//表示删除当前数据库,默认为 test数据库
show dbsuse hellodb.dropDatabase()show dbs
创建集合
MongoDB 中使用 createCollection() 方法来创建集合
options 可以是如下参数:db.createCollection(name,options)//name: 要创建的集合名称//options: 可选参数, 指定有关内存大小及索引的选项
删除集合
集合删除语法格式如下
以下实例删除了 hello数据库中的集合 sitedb.collection.drop()
use hellodb.createCollection("user")//先创建show tables //show collectionsdb.user.drop()show tables
操作文档
数据结构:和 JSON 基本一样。
存储形式:在集合中的数据都是 BSON 格式。(BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称。)插入文档
MongoDB 使用 insert() 或 save() 方法向集合中插入文档
以下文档可以存储在 MongoDB 的 hello数据库 的 col 集合中:db.COLLECTION_NAME.insert(document)//若插入的数据主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常,提示主键重复,//不保存当前数据或db.COLLECTION_NAME.save(document)//如果 _id 主键存在则更新数据,如果不存在就插入数据。//该方法新版本中已废弃//可以使用 db.collection.insertOne() 或 db.collection.replaceOne() 来代替。
查看已插入文档:db.col.insert({title:"mongodb插入文档",by:"jyy"})
db.col.find()
更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
update() 方法用于更新已存在的文档。
格式:
例子:db.collection.update(<query>,// update的查询条件,类似sql update查询内where后面的<update>,//update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的{upsert: <boolean>,//可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入multi: <boolean>,//可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新writeConcern: <document>//可选,抛出异常的级别。})
save()方法db.col.update({title:"mongodb插入文档"},{$set:{title:"mongodb"}})//只更新第一条db.col.update({title:"mongodb插入文档"},{$set:{title:"mongodb"}},{multi:true})//更新所有
格式:db.collection.save(<document>,// 文档数据。{writeConcern: <document>})
更多实例(暂时没用过,不了解)db.col.save({title:"mongodb",by:"hhh"})
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );//只更新第一条记录:db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );//全部更新db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );//只添加第一条db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );//全部添加进去db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );//全部更新db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );//只更新第一条
删除文档
MongoDB remove() 函数是用来移除集合中的数据
格式:
示例:db.collection.remove(<query>,//(可选)删除的文档的条件。<justOne>//可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档)//如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:db.collection.remove(<query>,{justOne: <boolean>,writeConcern: <document>//(可选)抛出异常的级别。})
db.col.remove({'title':'MongoDB'})//删除指定db.col.remove({})//删除所有
查询文档
MongoDB 查询文档使用 find() 方法。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下db.collection.find(query, projection)//query :可选,使用查询操作符指定查询条件//projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
db.col.find().pretty()
MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
AND
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。db.col.find({key1:value1, key2:value2}).pretty()
OR
MongoDB OR 条件语句使用了关键字 $or,语法格式如下:db.col.find({$or: [{key1: value1}, {key2:value2}]}).pretty()
