MongoDB ( 三 )高级_状态返回和安全

尤三姐
• 阅读 2616

在操作数据库时,对数据的修改是需要有足够的安全措施的,其实在实际工作中,我们用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 login
switched 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,
                                     });
点赞
收藏
评论区
推荐文章
天翼云RDS数据库如何修改数据库参数
天翼云RDS数据库支持修改数据库参数。最近遇到几个用户反馈要求天翼云对MySQLRDS数据库的库表名修改为大小写不敏感,这可以通过修改RDS数据库的参数来实现。今天就用这个实例来讲解一下天翼云RDS如何修改数据库参数。MySQL数据库对库表名称大小写是否敏感和MySQL运行的操作系统有关,因为Windows操作系统对大小写不敏感所以运行在Windows上的
Python进阶者 Python进阶者
3年前
手把手教你进行Mysql查询操作
大家好,我是IT共享者,人称皮皮。今天给大家讲讲MySQL中的查询操作。前言我们在以前,大概学了一下如何通过命令创建数据库,创建表等基本操作。但是实际上啊,至少在我的实际工作中,用到的不是太多,了解就可以。因为我们可以通过一些可视化软件,像NavicatforMySQL等。可以很方便的帮助我们创建数据库,创建表,修改表等操作。Navicatfor
Wesley13 Wesley13
3年前
MongoDB学习(1)
不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档、集合、数据库,下面我们挨个介绍。数据库一个mongodb中可以建立多个数据库,MongoDB中默认数据库为"db",该数据库存储在data目录中。在MongoDB中可以创建数据库,如果你想使用MongoDB,创建数据库不是必要的。"showd
Stella981 Stella981
3年前
Spring Boot 与 Kotlin 使用MongoDB数据库
我们在产品中用到NoSQL数据库MongoDB。下面就来简单介绍一下MongoDB,并且通过一个例子来介绍SpringBoot中对MongoDB访问的配置和使用。MongoDB简介MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(
Stella981 Stella981
3年前
Linux中selinux详解
Linux中selinux详解SELinux的基本操作SELinux是个经过安全强化的Linux操作系统,实际上,基本上原来的运用软件没有必要修改就能在它上面运行。真正做了特别修改的RPM包只要50多个。像文件系统EXT3都是经过了扩展。对于一些原有的命令也进行了扩展,另外还增加了
Wesley13 Wesley13
3年前
MongoDB 事务,复制和分片的关系
摘要:本文尝试对Mongo的复制和分布式事务的原理进行描述,在必要的地方,对实现的正确性进行论证,希望能为MongoDB内核爱好者提供一些参考。1.前言MongoDB基于wiredTiger提供的泛化SI的功能,重构了readHistory(readMajority)的能力基于wiredTiger提供的AllC
Wesley13 Wesley13
3年前
Ubuntu中使用RoboMongo实现MongoDB的可视化
在运行爬虫的过程中,考虑到将数据存储到数据库会更加方便查看和测试,所以使用了mongodb存储爬虫结果。在Ubuntu中,对MongoDB的操作都是在命令窗口中进行的,无法以图标的形式直接查看整个数据库的状态和其中的内容。在学习极客学院的爬虫教程中,老师在windows系统中使用了MongoVUE进行数据库的可视化,所以我决定也对自己的数据库进行可视化。
Easter79 Easter79
3年前
Titan Framework MongoDB深入理解1
在TitanFrameWork框架中,已经集成了MongoDB的各个功能,现在我们对框架内部的一些重要类进行分析与解读。1.MongoDBConverter在Titan框架中,比较重要的一个接口就是MongoDBConverter,它是作为框架对MongoDB数据Bson的一个转换器,其实现类是一个名字被加密的类(titan框架中
jq工具及其常用用法 | 京东物流技术团队
近来在工作中处理JSON处理较多,深入研究了一下jq,之前对jq的使用一直停留在JSON数据格式化的层面,实际它的能力远不止于此。在处理JSON数据时,我们经常需要在命令行中进行过滤、查询和编辑的操作。jq是一个强大的命令行JSON处理工具,它可以让我们轻
小万哥 小万哥
1年前
深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析
在MongoDB中,我们使用find()和findone()方法来在集合中查找数据,就像在MySQL数据库中使用SELECT语句来在表中查找数据一样查找单个文档要从MongoDB的集合中选择数据,我们可以使用findone()方法。findone()方法返
鸿蒙小林 鸿蒙小林
1个月前
《仿盒马》app开发技术分享-- 回收订单状态修改与展示(44)
技术栈Appgalleryconnect开发准备上一节我们实现了订单列表页,但是我们的订单列表又分为很多的订单状态,我们在订单列表页取出的数据是所有的数据,订单的状态我们还需要进行一些操作,如果都在一起,对用户来说非常的不友好,所以我们需要把它修改为不同状