MongoDB 入门系列(六)
2020-07-02 本文已影响0人
郁南
状态与安全
db.runCommand( )
它是数据库运行命令的执行器,执行命令首选就要使用它,因为它在Shell和驱动程序间提供了一致的接口。(几乎操作数据库的所有操作,都可以使用runCommand来执行)现在我们试着用runCommand来修改数据库
- 新建文件
mongodb-14.js
输入以下代码
var db = connect('run')
var obj = {
name: 'runtime'
}
db.ops.insert(obj)
db.ops.update({name: 'runtime'},{$set:{money:1000}},false,true)
var resultMessage=db.runCommand({getLastError:1})
printjson(resultMessage);
print('[SUCCESS]: The obj was inserted successfully.');
- 打开vscode控制台,执行命令
mongo .\mongodb-14.js
,可以看到以下输出
PS D:\Code\Test\Others\MongoDB> mongo .\mongodb-14.js
MongoDB shell version v3.4.4
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.4
connecting to: mongodb://127.0.0.1:27017/run
MongoDB server version: 3.4.4
{
"connectionId" : 12,
"updatedExisting" : true,
"n" : 2,
"syncMillis" : 0,
"writtenTo" : null,
"err" : null,
"ok" : 1
}
[SUCCESS]: The obj was inserted successfully.
上面的json就是状态
- false:第一句末尾的false是upsert的简写,代表没有此条数据时不增加;
- true:true是multi的简写,代表修改所有,这两个我们在前边课程已经学过。
- getLastError:1 :表示返回功能错误,这里的参数很多,如果有兴趣请自行查找学习,这里不作过多介绍。
- printjson:表示以json对象的格式输出到控制台
db.listCommands( ):查看所有的Commad命令,内容很多,本节只讲解工作中经常使用的内容。
比如我们要查看是否和数据库链接成功了,就可以使用Command命令。
db.runCommand({ping:1})
返回ok:1就代表链接正常。
findAndModify
- 把代码修改一下
var db = connect("run");
var obj = {
name: "runtime",
age: 10,
from: "深圳",
};
db.ops.insert(obj);
var myModify = {
findAndModify: "ops",
query: { name: "runtime" },
update: { $set: { age: 18 } },
new: true, //更新完成,需要查看结果,如果为false不进行查看结果
};
var ResultMessage = db.runCommand(myModify);
printjson(ResultMessage);
print("[SUCCESS]: The obj was inserted successfully.");
- 清空之前内容,然后构建一下代码
(1)清空
> db.ops.drop()
true
(2)构建
PS D:\Code\Test\Others\MongoDB> mongo .\mongodb-14.js
MongoDB shell version v3.4.4
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.4
connecting to: mongodb://127.0.0.1:27017/run
MongoDB server version: 3.4.4
{
"lastErrorObject" : {
"updatedExisting" : true,
"n" : 1
},
"value" : {
"_id" : ObjectId("5efdf5fcb512bcff5e935b0c"),
"name" : "runtime",
"age" : 18,
"from" : "深圳"
},
"ok" : 1
}
[SUCCESS]: The obj was inserted successfully.
(3)查询验证
> db.ops.find()
{ "_id" : ObjectId("5efdf5fcb512bcff5e935b0c"), "name" : "runtime", "age" : 18, "from" : "深圳" }
findAndModify的性能是没有直接使用db.collections.update的性能好,但是在实际工作中都是使用它,毕竟要商用的程序安全性还是比较重要的。
findAndModify属性值:
- query:需要查询的条件/文档
- sort: 进行排序
- remove:[boolean]是否删除查找到的文档,值填写true,可以删除。
- new:[boolean]返回更新前的文档还是更新后的文档。
- fields:需要返回的字段
- upsert:没有这个值是否增加