findOneAndUpdate和更新的区别是什么? 两者都接受查询和doc更新的标准。
答案 0 :(得分:44)
这里有.update()
和.findAndModify()
的相应文档,这是.findOneAndUpdate()
的根方法。
但主要区别在于:
update():用于针对与集合中的查询条件匹配的“一个或多个”文档执行原子更新操作。它返回其响应中修改过的文档的数量。
findOneAndUpdate():目的是在“单数”文档上处理更新语句,以及检索“单数”文档的内容。返回的状态取决于传递给操作的“new”选项的值。返回true
“已修改”文档的位置。在任何修改之前返回false
“原始”文档的位置。后一种形式是默认选项。
简而言之。一个是用“批量”修改而不用担心结果中的文档内容。另一个是修改单个文档并在结果中返回文档内容。
这就是区别。
答案 1 :(得分:5)
.findOneAndUpdate
方法发出mongodb .findAndModify
更新命令,并将找到的文档(如果有)返回给回调,如果new
选项为true
,则返回修改后的文档而不是原始文档 String packageName="javax.mail.internet.";
String simpleClassName="MimeMultipart";
String className=packageName+simpleClassName;
Class<?> cl=Class.forName(className);
URL url=cl.getResource(simpleClassName+".class");
System.out.println("url="+url);
和.update
以update()
操作执行查询。
答案 2 :(得分:1)
请注意,findOneAndXXX方法中有一个选项returnNewDocument
,其默认值为true
。如果您使用的是node.js驱动程序,则这些选项称为returnOriginal
。