在第 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,如果沒有移除任何文件)。