第二章 文档数据库 (DocDB) 简介 - JSON结构
JSON结构
IRIS 文档数据库支持 JSON 动态对象和 JSON 动态数组。可以使用 SET 命令创建这些 JSON 结构。
以下示例展示了如何使用 JSON 存储分层数据。第一个 SET 创建一个动态抽象对象,其中包含嵌套的 JSON 结构的键:值对和数组。然后,该示例将动态抽象对象转换为 JSON 字符串,然后将该 JSON 字符串作为文档插入到现有文档数据库中。
SET dynAbObj = {
"FullName":"John Smith",
"FirstName":"John",
"Address":{
"street":"101 Main Street",
"city":"Mapleville",
"state":"NY",
"postal code":10234
},
"PhoneNumber":
[
{"type":"home","number":"212-456-9876"},
{"type":"cell","number":"401-123-4567"},
{"type":"work","number":"212-444-5000"}
]
}
SET jstring = dynAbObj.%ToJSON() // dynamic abstract object to JSON string
DO personDB.%FromJSON(jstring) // JSON string inserted into document database
在此示例中,FullName 存储为简单的键:值对。地址有一个子结构,它存储为由键:值对组成的对象。 PhoneNumber 有一个存储为数组的子结构。
文档
文档存储在创建的数据库类实例的属性中的 %Doc 中。下面的示例显示了这一点,该示例将 JSON 数组存储在 %Doc 属性中:
SET jarry = ["Anne","Bradford","Charles","Deborah"]
SET myoref = ##class(MyDBs.DB1).%New()
SET myoref.%Doc = jarry
SET docoref = myoref.%Doc
WRITE "%Doc property oref: ",docoref,!
WRITE "%Doc Property value: ",docoref.%ToJSON()
默认情况下,%Doc 数据类型为 %Library.DynamicAbstractObject,这是用于存储 JSON 对象或 JSON 数组的数据类型。可以在 %CreateDatabase()方法中指定不同的数据类型。
其他数据库属性:
%DocumentId是一个IDENTITY属性,包含标识文档的唯一整数;%DocumentId从1开始计数。在大多数情况下,%DocumentId值是系统分配的。%DocumentId必须是唯一的;%DocumentIds不一定按顺序分配;分配序列中可能会出现间隙。文档数据库还会自动为%DocumentId值生成IdKey索引。%LastModified记录定义文档实例时的UTC时间戳。