描述的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
通过安全通道。