博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB ( 三 )高级_状态返回和安全
阅读量:6899 次
发布时间:2019-06-27

本文共 1845 字,大约阅读时间需要 6 分钟。

在操作数据库时,对数据的修改是需要有足够的安全措施的,其实在实际工作中,我们用db.collections.update的时候不多,在修改时我们都会用findAndModify,它可以给我们返回来一些必要的参数,让我们对修改多了很多控制力,控制力的加强也就是对安全的强化能力加强了。

应答时写入

我们之前所学习的都是非应答式的,就是再操作完数据之后,并没有任何回应和返回值。

应答式

写入就会给我们返回结果,结果里面包含的项目很多,这样我们就能更好的进行程序的控制和安全机制的处理。

db.runCommand()

他是数据库运行命令的执行器,执行命令首先就要使用它,因为它在Shell和驱动程序间提供了一致的接口。

db.workmate.update({sex:1},{$set:{money:1000}},false,true)// false意思是,如果有这个属性就修改,如果没有就不修改,(因为我们要修改的只是)// true 意思是,如果是true,表示对所有查询结果都做修改var resultMessage=db.runCommand({getLastError:1}) // 执行完数据库操作后会返回一个对象// getLastError:1 :表示会返回功能错误// printjson:表示以json对象的格式输出到控制台。printjson(resultMessage);// 以json的形式输出

上边的代码,我们修改了所有男士的数据,每个人增加了1000元钱(money),然后用db.runCommand()执行,可以看到执行结果在控制台返回了。如下:

{        "connectionId" : 1,        "updatedExisting" : true, // 这个有用        "n" : 2,        "syncMillis" : 0,        "writtenTo" : null,        "err" : null,        "ok" : 1}
// runCommand()的另外一个用法// 命令行中使用该命令查看数据库是否连接成功> use loginswitched to db login> db.runCommand({ping: 1});{ "ok" : 1 }// 返回{ "ok" : 1 }表示数据库连接成功!!

findAndModify

findAndModify是查找并修改的意思。配置它可以在修改后给我们返回修改的结果。

// var myModify={    findAndModify:"workmate", // 哪个集合    query:{name:'JSPang'},  // 查询条件    update:{$set:{age:18}},    // 修改操作    new:true    //更新完成,需要查看结果,如果为false不进行查看结果}var ResultMessage=db.runCommand(myModify); printjson(ResultMessage)// findAndModify的性能是没有直接使用db.collections.update的性能好,但是在实际工作中都是使用它,毕竟要商用的程序安全性还是比较重要的。

findAndModify属性值:

query是查询选择器,与findOne的查询选择器相同

update是要更新的值,不能与remove同时出现

remove表示删除符合query条件的文档,不能与update同时出现

new为true:返回个性后的文档,false:返回个性前的,默认是false

sort:排序条件,与sort函数的参数一致。

fields:投影操作,与find*的第二个参数一致。

upsert:与update的upsert参数一样。

例如:

db.mongo_book.findAndModify({query:{"code":15409639},                                     update:{ $set : { catalogStatus : 3}} ,                                     new:true,                                     });

转载地址:http://qfcdl.baihongyu.com/

你可能感兴趣的文章
我的2016年
查看>>
概览Visual Studio 15.3的第二个预览版
查看>>
Tensorflow 1.3版本更新概览
查看>>
Spark比拼Flink:下一代大数据计算引擎之争,谁主沉浮?
查看>>
jDays 2016综合报道
查看>>
通过Visual Studio为Linux编写C++代码
查看>>
利用已有的大数据技术,如何构建机器学习平台
查看>>
阿里云9月1日安骑士升级故障真相
查看>>
【树莓派系列】一.准备工作与开机
查看>>
Reddit引入Envoy支持架构改造,性能显著提升
查看>>
Java Nestmate稳步推进
查看>>
试水区块链出版?纽约时报在招人了
查看>>
Vaadin发布Polyglot框架第8版
查看>>
vim + syntastic + verilator or iverilog
查看>>
git 简略笔记之三 -- 使用 github 管理项目
查看>>
CentOS7.0下编译安装PHP 5.6.21
查看>>
指针和字符串和字符串常量、用gdb来获取非法内存中的内容
查看>>
分析递归程序比较好的画图法
查看>>
图像形态学的几种基本操作 Image Morphology
查看>>
2015 杭州黑客马拉松赛后随笔
查看>>