第七章 管理文档 - 在数据库中查找文档:%FindDocuments()

第七章 管理文档 - 在数据库中查找文档:%FindDocuments()

在数据库中查找文档:%FindDocuments()

要在数据库中查找一个或多个文档并将文档作为 JSON 返回,请调用 %FindDocuments()方法。此方法采用三个可选位置谓词的任意组合:限制数组、投影数组和限制键:值对。

以下示例(没有位置谓词)都返回数据库中所有文档中的所有数据:

  WRITE db.%FindDocuments().%ToJSON()
  WRITE db.%FindDocuments(,,).%ToJSON()

限制谓词数组

限制谓词语法 ["property","value","operator"] 返回匹配文档的全部内容。可以将属性、值和运算符指定为数组作为搜索条件。如果不指定运算符,则默认为"="。可以使用隐式 AND 逻辑将多个限制指定为一组限制谓词: [["property","value","operator"],["property2","value2","operator2"]]。限制谓词是可选的。

以下示例返回 documentId 大于 2 的所有文档:

  SET result = db.%FindDocuments(["%DocumentId",2,">"])
  WRITE result.%ToJSON()

或通过链接方法:

  WRITE db.%FindDocuments(["%DocumentId",2,">"]).%ToJSON()

如果文档的内容与搜索条件匹配,它将返回如下结果:

{
   "sqlcode":100,"message":null,"content":[{
   "%Doc":"{\"firstName\":\"Fred\",\"lastName\":\"Astare\"}","%DocumentId":"3","%LastModified":"2018-03-05 18:15:30.39"},{
   "%Doc":"{\"firstName\":\"Ginger\",\"lastName\":\"Rogers\"}","%DocumentId":"4","%LastModified":"2018-03-05 18:15:30.39"}]} 

如果没有文档符合搜索条件,则返回:

{
   "sqlcode":100,"message":null,"content":[]}

要通过键:值对查找文档,必须为该键定义文档属性:

  IF $SYSTEM.DocDB.Exists("People")
    {
    SET db = ##class(%DocDB.Database).%GetDatabase("People")}
  ELSE {
   SET db = ##class(%DocDB.Database).%CreateDatabase("People") }
    WRITE db.%Size(),!
  DO db.%CreateProperty("firstName","%String","$.firstName",0)
  SET val = db.%SaveDocument({
   "firstName":"Fred","lastName":"Rogers"})
  SET val = db.%SaveDocument({
   "firstName":"Serena","lastName":"Williams"})
  SET val = db.%SaveDocument({
   "firstName":"Bill","lastName":"Faulkner"})
  SET val = db.%SaveDocument({
   "firstName":"Barak","lastName":"Obama"})
  SET val = db.%SaveDocument({
   "firstName":"Fred","lastName":"Astare"})
  SET val = db.%SaveDocument({
   "lastName":"Madonna"})
  SET result = db.%FindDocuments(["firstName","Fred","="])
  WRITE result.%ToJSON()

可以使用各种谓词运算符,包括 %STARTSWITHINNULLNOT NULL,如以下示例所示:

  SET result = db.%FindDocuments(["firstName","B","%STARTSWITH"])
  WRITE result.%ToJSON()
  SET result = db.%FindDocuments(["firstName","Bill,Fred","IN"])
  WRITE result.%ToJSON()
  SET result = db.%FindDocuments(["firstName","NULL","NULL"])
  WRITE result.%ToJSON()
  SET result = db.%FindDocuments(["firstName","NULL","NOT NULL"])
  WRITE result.%ToJSON()

相关推荐

  1. 408第二轮复习 数据结构 查找

    2024-02-21 13:20:03       26 阅读
  2. 8-网络设备文件管理

    2024-02-21 13:20:03       52 阅读
  3. NodeJs 文件上传

    2024-02-21 13:20:03       56 阅读
  4. Dockerfile : Dockerfile文件与指令说明

    2024-02-21 13:20:03       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-21 13:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-21 13:20:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-21 13:20:03       82 阅读
  4. Python语言-面向对象

    2024-02-21 13:20:03       91 阅读

热门阅读

  1. SQLite 知识整理

    2024-02-21 13:20:03       47 阅读
  2. uniapp使用sqlite

    2024-02-21 13:20:03       49 阅读
  3. 备份服务器数据的重要

    2024-02-21 13:20:03       51 阅读
  4. 锁相放大器,数字锁相放大器.C和python版的源代码

    2024-02-21 13:20:03       50 阅读
  5. spring boot 3.0如何优雅的使用s3协议连接minio

    2024-02-21 13:20:03       47 阅读
  6. Converter学习

    2024-02-21 13:20:03       52 阅读
  7. shell关联数组用法

    2024-02-21 13:20:03       50 阅读
  8. webScoket实时通讯聊天

    2024-02-21 13:20:03       57 阅读
  9. CSS的全局值 initial inherit revert overlay unset

    2024-02-21 13:20:03       48 阅读
  10. MFC中不同编码格式内容的写入

    2024-02-21 13:20:03       48 阅读
  11. 手写table表格(一表头多数据)

    2024-02-21 13:20:03       51 阅读