第 4.3 节“集合 CRUD 函数概述”中描述的 CRUD 命令都作用于集合中与过滤器匹配的一组文档。X DevAPI 还提供以下操作,这些操作作用于由其文档 ID 标识的单个文档
Collection.getOne(string id)
返回具有给定id
的文档。这是Collection.find("_id = :id").bind("id", id).execute().fetchOne()
的快捷方式。Collection.replaceOne(string id, Document doc)
更新或替换由id
标识的文档(如果存在),并使用提供的文档。Collection.addOrReplaceOne(string id, Document doc)
添加给定的文档;但是,如果id
或其上具有唯一索引的任何其他字段已存在于集合中,则该操作将更新匹配的文档。Collection.removeOne(string id)
删除具有给定id
的文档。这是Collection.remove("_id = :id").bind("id", id).execute()
的快捷方式。
使用这些操作,您可以通过其 ID 引用文档(请参阅第 5.2 节“使用文档 ID”),通过遵循以下“加载、修改和保存”模式,可以更轻松地对单个文档执行操作
doc = collection.getOne(id); // Load document of the specified id into a temporary document called doc
doc["address"] = "123 Long Street"; //Modify the "address" field of doc
collection.replaceOne(id, doc); // Save doc into the document with the specified id
单文档操作的语法如下
Document getOne(string
,其中id
)id
是要检索的文档的文档 ID。此操作返回文档,如果未找到匹配项,则返回NULL
。搜索具有给定id
的文档并返回它。Result replaceOne(string
,其中id
, Documentdoc
)id
是要替换的文档的文档 ID,而doc
(可以包含表达式)是用于替换由id
标识的文档的新文档。如果doc
本身包含一个_id
值,并且它与id
不同,则操作失败。如果新文档包含与集合中任何其他文档冲突的唯一键值,则操作也会失败。该操作返回一个Result
对象,该对象指示受影响文档的数量(1 或 0)。如果未找到id
的匹配项,则函数正常返回,而不进行任何更改。Result addOrReplaceOne(string id, Document doc)
,其中id
是要替换或添加的文档的文档 ID(如果找不到id
的匹配项),而doc
(可以包含表达式)是用于替换或添加的新文档。如果doc
本身包含一个_id
值,并且它与id
不同,则操作失败。如果新文档包含与集合中任何其他文档冲突的唯一键值,则操作也会失败。此操作返回一个Result
对象,该对象指示受影响文档的数量(1 或 0)。Result removeOne(string
,其中id
)id
是要删除的文档的文档 ID。此操作返回一个Result
对象,该对象指示已删除文档的数量(1 或 0,如果没有)。