# chmod +x /etc/init.d/mongodb
# chkconfig --add mongodb
# chkconfig mongodb on
- 然后启动mongdb
service mongodb start
启动shell
mongodb数据增删
在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比:
创建数据库
use DATABASE_NAME
如果数据库不存在,则创建数据库,否则切换到指定数据库。
show dbs
可以看到我们刚刚创建的数据库并不在列表中 如果想要添加进去必须插入一些数据
db.mongodb_test.insert({‘name‘:‘zgrey‘})
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
删除数据库
db.dropDatabase()
删除当前数据库,默认为 test,你可以使用 db 命令查看当前数据库名。
- 集合删除的格式是
db.collection.drop()
集合增删
db.createCollection(name, options)
name: 新创建的集合名称
options: 创建参数
db.collection.drop()
例子:
db.student.drop() 删除student集合
Mongodb插入文档
-
文档的数据结构和JSON基本一样。
-
所有存储在集合中的数据都是BSON格式。
-
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
- MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
- 以下文档可以存储在 MongoDB 的 mongo 数据库 的 col集合中:
db.col.insert({title:‘Mongodb_test‘,description:‘Mongodb是一个Nosql数据库‘,by:‘zgrey‘,url:‘www.zgrey.com‘,tags:[‘mongodb‘,‘test‘,‘zgrey‘],likes:100})
以上实例中 col 是我们的集合名,前一章节我们已经创建过了,如果该集合不在该数据库中, MongoDB 会自动创建该集合并插入文档。
document=({title:‘Mongodb_test‘,description:‘Mongodb是一个Nosql数据库‘,by:‘zgrey‘,url:‘www.zgrey.com‘,tags:[‘mongodb‘,‘test‘,‘zgrey‘],likes:100})
- 插入数据库
db.col.insert(document)
插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。
Mongodb删除文档
MongoDB remove()函数是用来移除集合中的数据。
MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
db.collection.remove(
<query>,
<justOne>
)
如果你的 MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档。
- writeConcern :(可选)抛出异常的级别。
使用find()函数查询数据
- 接下来我们移除 title 为 ‘Mongodb_test‘ 的文档:
db.col.remove({‘title‘:‘Mongodb_test‘})
移除两条数据
如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:
- 测试上面的命令
db.col.remove({title:‘Mongodb_test‘},1)
- 如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
>db.col.remove({})
>db.col.find()
更新文档
MongoDB 使用 和 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。
- 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 :可选,抛出异常的级别。
我们在集合 col 中插入如下数据:
- 接着我们通过 update() 方法来更新标题(title):
db.col.update({‘title‘:‘Mongodb_test‘},{$set:{‘title‘:‘Mongodb‘}})
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
>db.col.update({‘title‘:‘MongoDB‘},{$set:{‘title‘:‘MongoDB‘}},{multi:true})
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
- document : 文档数据。
- writeConcern :可选,抛出异常的级别。
测试: 这里我们替换id为 ObjectId("60822d2002162bf438740c6e") 的文档
db.col.save({"_id" : ObjectId("60822d2002162bf438740c6e"),‘title‘:‘Mongodb‘,‘description‘:‘Mongodb Nosql‘,‘by‘:‘zgrey‘,‘url‘:‘www.zgrey‘,"tags" : [ "mongodb", "test", "zgrey" ], "likes" :123})
只更新第一条记录:
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 );
用户操作
创建用户
创建一个数据库新用户用db.createUser()方法,如果用户存在则返回一个用户重复错误。
db.createUser(user, writeConcern)
- user:这个文档创建关于用户的身份认证和访问信息;
- writeConcern:这个文档描述保证MongoDB提供写操作的成功报告。
User文档
user文档,定义了用户的以下形式:
{ user: "<name>",
pwd: "<cleartext password>",
customData: { <any information> },
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
]
}
user文档字段介绍:
- user字段,为新用户的名字;
- pwd字段,用户的密码;
- cusomData字段,为任意内容,例如可以为用户全名介绍;
- roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
在roles字段,可以指定内置角色和用户定义的角色。
MongoDB内置角色有如下:
-
数据库用户角色:read、readWrite;
-
数据库管理角色:dbAdmin、dbOwner、userAdmin;
-
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
-
备份恢复角色:backup、restore;
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
-
超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
-
内部角色:__system
你可以查看每个角色所拥有的操作权限。
writeConcern文档
- w选项:允许的值分别是 1、0、大于1的值、"majority"、;
- j选项:确保mongod实例写数据到磁盘上的journal(日志),这可以确保mongd以外关闭不会丢失数据。设置true启用。
- wtimeout:指定一个时间限制,以毫秒为单位。wtimeout只适用于w值大于1。
示例
例如:在products数据库创建用户accountAdmin01,并给该用户admin数据库上clusterAdmin和readAnyDatabase的角色,products数据库上readWrite角色。
use products
db.createUser( { "user" : "zgrey",
"pwd": "123",
"customData" : { employeeId: 12345 },
"roles" : [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
] },
{ w: "majority" , wtimeout: 5000 } )
查询用户
show users
删除用户
修改用户
use products
db.createUser( { "user" : "zgrey",
"pwd": "123",
"customData" : { employeeId: 12345 },
"roles" : [ { role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" },
"readWrite"
] },
{ w: "majority" , wtimeout: 5000 } )
- 修改用户的角色
db.updateUser(‘zgrey‘,{‘roles‘:[{‘role‘:‘clusterAdmin‘,‘db‘:‘admin‘}]})
修改密码
- 修改zgrey用户密码为789
db.changeUserPassword(‘zgrey‘,‘789‘)
- 测试
mongo -uzgrey -p789 --authenticationDatabase products
java代码连接mongodb
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.2.1</version>
</dependency>
@Test
public void connect(){
MongoClient mongoClient = new MongoClient("192.168.207.139",27017);
//也可以使用字符串进行连接
// MongoClientURI clientURI = new MongoClientURI("mongodb://192.168.207.139:27017");
// MongoClient mongoClient = new MongoClient(clientURI);
MongoDatabase products = mongoClient.getDatabase("mongodb");
MongoCollection<Document> col = products.getCollection("col");
Document first = col.find().first();
String s = first.toJson();
System.out.println(s);
}
本类排行
今日推荐
-
英语单词宝新版
版本:v1.1
大小:24.5M
日期:2024-04-20
-
云数字园区新版
版本:v5.17.0
大小:118.9M
日期:2024-04-20
-
驹卒智外勤官方版
版本:v1.0.0
大小:17.0M
日期:2024-04-20
-
PDF格式转换器正式版
版本:v1.0.0
大小:20.8M
日期:2024-04-20
-
钢琴节奏键盘大师完整版
版本:v1.5.2.1
大小:50.2M
日期:2024-04-20
-
百咔相机免费版
版本:1.00
大小:83.16MB
日期:2024-04-20
热门手游
|