第九章 管理文档 - 查询数据库中的文档:%ExecuteQuery()

46 阅读1分钟

第九章 管理文档 - 查询数据库中的文档:%ExecuteQuery()

查询数据库中的文档:%ExecuteQuery()

可以使用 %ExecuteQuery()方法将数据库中的文档数据作为结果集返回。指定标准 SQL 查询 SELECT,并在 FROM 子句中指定数据库名称。如果创建数据库名称时没有包名称(架构),请指定默认 ISC_DM 架构。

以下示例从数据库中的所有文档中检索 %Doc 内容数据作为结果集:

  SET rval=db.%ExecuteQuery("SELECT %Doc FROM ISC_DM.People")
  DO rval.%Display()

以下示例使用 WHERE 子句条件来限制通过 documentId 值检索哪些文档:

  SET rval=db.%ExecuteQuery("SELECT %DocumentId,%Doc FROM ISC_DM.People WHERE %DocumentId > 2")
  DO rval.%Display()

以下示例从满足 WHERE 子句条件的所有文档中检索 %DocumentIdlastName 属性。请注意,要检索用户定义键的值,必须为该键定义文档属性:

  SET rval=db.%ExecuteQuery("SELECT %DocumentId,lastName FROM ISC_DM.People WHERE lastName %STARTSWITH 'S'")
  DO rval.%Display()

删除文档:%DeleteDocument()

可以通过文档 ID 或数据选择条件从数据库中删除文档。

  • %DeleteDocument()方法删除由 documentId 标识的单个文档:
  SET val = db.%DeleteDocument(2)
  WRITE "deleted document = ",val.%ToJSON()

成功完成将返回已删除文档的 JSON 值。失败会引发 StatusException 错误。

  • %DeleteDocumentByKey()方法删除由文档内容标识的文档。指定键:值对。
  • %Clear()方法删除数据库中的所有文档并返回数据库的oref(对象引用),如下例所示:
  SET dboref = db.%Clear()
  WRITE "database oref: ",dboref,!
  WRITE "number of documents:",db.%Size()

这允许链接方法,如以下示例所示:

  WRITE db.%Clear().%SaveDocument({"firstName":"Venus","lastName":"Williams"}).%Id(),!