4.5单文档操作

描述的CRUD命令第4.3节“集合CRUD功能概述”所有操作都作用于集合中与筛选器匹配的一组文档。X DevAPI还提供了以下操作,它们作用于由文档id标识的单个文档:

  • 收集。getOne (string id)返回具有给定属性的文档id.这是一条捷径收集。找到(“_id =: id”)。绑定(id, id) . execute () .fetchOne ()

  • 收集。replaceOne(字符串id,文档文档)更新或替换由标识的文档id,如有,连同所提供的文件。

  • 收集。addOrReplaceOne(字符串id,文档文档)添加给定的文档;然而,如果id或集合中已经存在的具有惟一索引的任何其他字段,则该操作将更新匹配的文档。

  • 收集。removeOne (string id)对象移除文档id.这是一条捷径收集。remove(“_id =: id”)。绑定(id, id) . execute ()

使用这些操作,您可以通过文档的ID引用文档(参见第5.2节,“使用文档id”),通过遵循“加载、修改和保存”模式,简化了对单个文档的操作,例如:

医生= collection.getOne (id);//将指定id的文档加载到名为doc的临时文档中doc["address"] = "123 Long Street";//修改doc collection的address字段。replaceOne (id、doc);//将doc保存到指定id的文档中

单文档操作语法

单文档操作的语法如下:

  • 文档getOne(字符串id,在那里id是要检索的文档的文档ID。该操作返回文档或如果没有找到匹配。属性的文档id并返回它。

  • 结果replaceOne(字符串id、文档医生,在那里id要替换的文档的文档ID和医生是新文档,它可以包含表达式。如果医生包含一个_id值,它被忽略。该操作返回结果对象,该对象指示受影响文档的数量(如果没有则为1或0)。接受替换匹配文档的文档对象。如果没有找到匹配项,则函数正常返回,不做任何更改。

  • addOrReplaceOne(字符串id,文档文档),在那里id要替换的文档的文档ID和医生是新文档,它可以包含表达式。如果医生包含一个_id值,它被忽略。此操作返回结果对象,该对象指示受影响文档的数量(如果没有则为1或0)。将文档添加到集合中。

    如果医生有一个值_id它和给定的不匹配id这时会产生一个错误。如果集合中有一个具有给定文档ID的文档,则检查集合中是否有与其中惟一键冲突的任何文档医生冲突单据的单据ID不是的id这时会产生一个错误。否则集合中的现有文档将被替换为医生.如果集合的任何文档与来自的惟一键冲突医生这时会产生一个错误。否则医生被添加到集合中。

  • 结果removeOne(字符串id,在那里id是要删除的文档的文档ID。此操作返回结果对象,该对象指示已删除文档的数量(如果没有则为1或0)。

重要的

这些操作接受显式id确保操作所做的任何更改都应用于预期的文档。在许多场景中,文档医生可能来自不受信任的用户,这些用户可能会更改id,从而替换应用程序所期望的其他文档。为了减少这种风险,您应该传输显式文档id通过安全通道。