当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


MongoDB FindAndModify()用法及代码示例


findAndModify()方法修改并返回与给定条件匹配的单个文档。默认情况下,此方法返回修改前的文档。要返回对更新进行了修改的文档,请使用新选项并将其值设置为true。它以文档为参数。

  • 如果要查找嵌入式文档的字段,请使用以下语法:

“field.nestedfieldname”:<value>

or

{field:{nestedfieldname:<value>}}

  • 通过此方法返回的文档始终包含_id字段。如果您不需要_id字段,请在投影中设置_id:0。
  • 您可以在multi-document个事务中使用此方法。
  • 如果使用此方法,则在共享集合中,查询表达式必须在共享键上包含相等条件。

用法:



db.Collection_name.findAndModify(
{
    selection_criteria:<document>,
    sort:<document>,
    remove:<boolean>,
    update:<document>,
    new:<boolean>,
    fields:<document>,
    upsert:<boolean>,
    bypassDocumentValidation:<boolean>,
    writeConcern:<document>,
    collation:<document>,
    arrayFilters:[ <filterdocument1>, ... ]
})

参数:

  • remove:如果更新字段不存在,则必须这样做。如果为true,则删除选定的文档。默认值为false。
  • update:如果删除字段不存在,则必须这样做。执行所选文档的更新。更新字段采用相同的更新运算符或field:value规范来修改所选文档。
  • 其他是可选的。

可选参数:

  • selection_criteria:它指定修改的选择标准。查询字段使用与db.collection.find()方法中使用的查询选择器相同的查询选择器。尽管查询可能匹配多个文档,但是findAndModify()将仅选择一个文档进行修改。
  • 分类:确定如果查询选择多个文档,操作将修改哪个文档。 findAndModify()将按照此参数指定的排序顺序修改第一个文档。
  • 新:为true时,返回修改后的文档而不是原始文档。 findAndModify()方法将忽略删除操作的新选项。默认为false。
  • 领域:要返回的字段子集。字段文档指定包含1的字段,如下所示:
fields:{ <field1>:1, <field2>:1, ... }
  • Upsert:此参数的默认值为false。如果为true,则当update方法中没有文档与给定条件匹配时,它将在集合中创建一个新文档。
  • writeConcern:仅当您不想使用默认写关注点时才使用它。此参数的类型是文档。
  • 排序规则:它指定使用归类进行操作。它允许用户为字符串比较指定language-specific规则,例如字母大写和重音符号规则。此参数的类型是文档。
  • arrayFilters:它是过滤器文档的数组,指示要针对数组字段上的更新操作修改哪些数组元素。此参数的类型是数组。

返回:

  • 返回单个修改前文档。要返回对更新进行了修改的文档,请使用新选项并将其设置为true。
  • 如果没有找到关于upsert的文档,这意味着该命令执行插入操作,并且new为false,并且未指定sort选项,则该方法返回null。
  • 如果找不到用于upsert的文档,这意味着该命令执行插入操作,并且new为false,并且指定了sort选项,则该方法返回空文档{}。

例子:

在以下示例中,我们正在使用:

Database: gfg

Collections:student

Document: Three documents contains name, language they use in coding and the score they got by solve problem on gfg.



  • 我们将名称增加vishal的标记加4:
db.student.findAndModify({query:{name:"vishal"},update:{$inc:{score:4}}})

在这里,我们使用findAndModify()方法增加名称为“vishal”的文档的标记字段的值。此方法返回修改前的文档

注意:$inc 运算符会增加分数中的值。

更新后:

  • 获取修改后的文档:
 db.student.findAndModify({query:{name:"vishal"},
                          update:{$inc:{score:4}},new:true})

在这里,我们再次将名称为“vishal”的文档的score字段的值增加4,但是这次我们将new的值设置为true,并且findAndModify()方法返回修改后的文档。

更新后:

相关用法


注:本文由纯净天空筛选整理自nikhilchhipa9大神的英文原创作品 MongoDB – FindAndModify() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。