mongo "mongodb://test:8888@127.0.0.1:28015/database?authSource=admin"
mongo --username alice --password 8888 --authenticationDatabase admin --host 127.0.0.1 --port 28015
update() 方法用于更新已存在的文档,语法格式如下
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明
通过查询
show dbs --> use dbs --> show collections --> db.collection.find().pretty()
得到
{
"_id" : ObjectId("5da6c7db37a6775694f19f5e"),
"id" : 10001,
"title" : "我是第一个商品",
"imgUrl" : "",
"price" : 8888,
"oldPrice" : 10888,
"tags" : [
"com",
"cn",
"net"
]
}
{
"_id" : ObjectId("5da6c83973290000850053a7"),
"id" : 10002,
"title" : "我是第二个商品",
"imgUrl" : "",
"price" : 6666,
"oldPrice" : 6688,
"tags" : [],
}
为 id 为 10001 的数据添加 imgUrl
db.goods.update({'id':10001},{$set: {'imgUrl':'https://chen97.cn/wp-content/uploads/2019/10/unishop/goods/10001/main/1.jpg'}})
// WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
验证
{
"_id" : ObjectId("5da6c7db37a6775694f19f5e"),
"id" : 10001,
"title" : "我是第一个商品",
"imgUrl" : "https://chen97.cn/wp-content/uploads/2019/10/unishop/goods/10001/main/1.jpg",
"price" : 8888,
"oldPrice" : 10888,
"tags" : [
"com",
"cn",
"net"
]
}
save() 方法通过传入的文档来替换已有文档,语法格式如下
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明
替换 _id 为 5da6c83973290000850053a7 的文档数据
db.goods.save({
"_id" : ObjectId("5da6c83973290000850053a7"),
"id" : 10002,
"title" : "我是第二个商品",
"imgUrl" : "https://chen97.cn/wp-content/uploads/2019/10/unishop/goods/10002/main/1.jpg",
"price" : 6666,
"oldPrice" : 6688,
"tags" : ["sales","hot"],
})
通过 find() 命令来查看替换后的数据
{
"_id" : ObjectId("5da6c83973290000850053a7"),
"id" : 10002,
"title" : "我是第二个商品",
"imgUrl" : "https://chen97.cn/wp-content/uploads/2019/10/unishop/goods/10002/main/1.jpg",
"price" : 6666,
"oldPrice" : 6688,
"tags" : ["sales","hot"],
}
只更新第一条记录
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 );
use admin;
db.auth('root','password');
db.system.users.find().pretty();
use db;
show users;
db.createUser({
user:'username',
pwd: 'password',
roles:[
{ role:'readWrite',db:'dbname' },
{ role:'dbAdmin',db:'dbname' }
]
})
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
// 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
7. 内部角色:__system
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
backup,retore:在进行备份、恢复时可以单独指定的角色,在db.createUser()方法中roles里面的db必须写成是 admin库,要不然会 报错
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限,
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root:只在admin数据库中可用。超级账号,超级权限
db.dropUser('username');
ObjectParameterError: Parameter "obj" to Document() must be an object, got {
id: 4,
title: "new active4",
url: "https://uni-shop-1300412297.file.myqcloud.com/images/banner/b4.png",
to: "10004"
}
注意参数是否为标准 json 对象。
{
"id": 4,
"title": "new active4",
"url": "https://uni-shop-1300412297.file.myqcloud.com/images/banner/b4.png",
"to": "10004"
}