5.2使用文档标识符

本节描述什么是文档ID以及如何使用它。

每个文档都有一个称为文档ID的惟一标识符,可以认为它相当于表的主键。文档ID值通常是在添加文档时由服务器自动生成的,但也可以手动分配。属性中返回分配的文档IDgeneratedIds财产的结果(AddResult对象的collection.add ()操作,并可以使用getGeneratedIds ()方法。看到5.3节,“理解文档标识”获取有关文档id的更多背景信息。

下面的JavaScript代码示例展示了如何将文档添加到集合中,检索添加的文档的id,并测试是否不能添加重复的id。

mysql-js > var结果= mycollection.add({测试:“demo01”}). execute () mysql-js >打印(result.generatedIds)(“00006075 f6810000000000000006”)mysql-js > var =结果mycollection.add({测试:“demo02”})阀门({测试:“demo03”}). execute () mysql-js >打印(result.generatedIds)[“00006075 f6810000000000000007”,“00006075”f6810000000000000008] mysql-js > mycollection.find () {" _id ":“00006075 f6810000000000000006”、“测试”:“demo01”}{" _id ":“00006075 f6810000000000000007”、“测试”:“demo02”}{" _id ":“00006075 f6810000000000000008”、“测试”:“demo03”}3文件集(0.0102秒)mysql-js > var = mycollection结果。add({_id:' 00006075f68100000000000000000008 ', test:'demo04'}).execute()文档包含一个字段值,该字段值不是唯一的,但必须是(MySQL Error 5116)

如上面的示例所示,文档ID存储在_id文档字段。文档ID是VARBINARY ()最大长度为32个字符。如果一个_id当文件被创建时提供,它被尊重;如果没有_id,则自动将一个分配给文档。

下面的示例说明如何_id值可以提供,也可以自动生成。假设测试模式存在,并被分配给变量db,那收藏my_collection存在,custom_id是独一无二的。

var result = myColl. var result = myColl. var result = myColl. var result = myColl添加({_id: 'custom_id', a: 1}).execute();var document = myColl。找到(“= 1”). execute () .fetchOne ();print("User Provided Id:", document._id);//如果没有提供id,则会自动分配result = myColl。添加({b: 2}).execute();print(“自动生成Id: result.getGeneratedIds () [0]);

有些文档有一个自然的唯一密钥。例如,一个包含图书列表的集合很可能包含代表一本书的每个文档的国际标准图书号(ISBN)。ISBN是长度为13个字符的字符串,这完全在32个字符的长度限制之内_id字段。

//使用图书的唯一ISBN作为对象ID myColl。add({_id: "978-1449374020", title: "MySQL Cookbook: Solutions for Database Developers and Administrators"}).execute();

使用find ()根据文档ID从集合中获取新插入的图书。

var book = myColl。找到(_id =“978 - 1449374020”). execute ();

目前,X DevAPI不支持使用任何文档字段以外的隐式字段_id作为文档id——没有办法定义另一个键来执行相同的功能。