在第 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,如果沒有)。