SQL 在orientdb中提取数据的查询建议

SQL query advice for extracting data in orientdb

我正在努力处理 SQL 从 OrientDB 中提取数据的查询。

假设,每个文档都包含每个人在一个月中不同日期的出勤信息,我需要检查哪些人在一个月中的特定一天在场。

文件结构(出勤率):

{
  "2017": {
    "10": [
      {
        "day": "2",
        "presence": "1"
      },
      {
        "day": "3",
        "presence": "1"
      },
      {
        "day": "4",
        "presence": "0"
      },
      {
        "day": "5",
        "presence": "1"
      },
      {
        "day": "6",
        "presence": "1"
      },
      {
        "day": "9",
        "presence": "0"
      },
      {
        "day": "10",
        "presence": "1"
      },
      {
        "day": "11",
        "presence": "1"
      },
      {
        "day": "12",
        "presence": "1"
      },
      {
        "day": "13",
        "presence": "1"
      },
      {
        "day": "16",
        "presence": 1
      },
      {
        "day": "17",
        "presence": "0"
      },
      {
        "day": "18",
        "presence": 1
      },
      {
        "day": "19",
        "presence": 1
      },
      {
        "day": "20",
        "presence": 1
      },
      {
        "day": "23",
        "presence": "1"
      },
      {
        "day": "24",
        "presence": "0"
      },
      {
        "day": "25",
        "presence": "1"
      },
      {
        "day": "26",
        "presence": "1"
      },
      {
        "day": "27",
        "presence": "0"
      },
      {
        "day": "30",
        "presence": "1"
      },
      {
        "day": "31",
        "presence": "1"
      }
    ],
    "09": [
      {
        "day": "1",
        "presence": "0"
      },
      {
        "day": "4",
        "presence": "0"
      },
      {
        "day": "5",
        "presence": "0"
      },
      {
        "day": "6",
        "presence": "0"
      },
      {
        "day": "7",
        "presence": "1"
      },
      {
        "day": "8",
        "presence": "1"
      },
      {
        "day": "11",
        "presence": "1"
      },
      {
        "day": "12",
        "presence": "1"
      },
      {
        "day": "13",
        "presence": "1"
      },
      {
        "day": "14",
        "presence": "1"
      },
      {
        "day": "15",
        "presence": "0"
      },
      {
        "day": "18",
        "presence": "1"
      },
      {
        "day": "19",
        "presence": "1"
      },
      {
        "day": "20",
        "presence": "0"
      },
      {
        "day": "21",
        "presence": "1"
      },
      {
        "day": "22",
        "presence": "1"
      },
      {
        "day": "25",
        "presence": "1"
      },
      {
        "day": "26",
        "presence": "1"
      },
      {
        "day": "27",
        "presence": "0"
      },
      {
        "day": "28",
        "presence": "1"
      },
      {
        "day": "29",
        "presence": "1"
      }
    ]
  },
  "person_id": "0f805072-d453-4321-8047-1f75bcb96451"
}

我想得到的是:

"select person_id, presence from attendance[2017][10] where day = 31 and presence = 1"

但我不能让它在 orientDB 中工作..

也许,出于某种原因,数据结构是 sh*tty - 请指教。

谢谢, 拉法尔

试试这个:

select 
   person_id, 
   attendance["2017"]["10"][day = "31" AND presence = "1"] as presence 
from attendance 
UNWIND presence

请注意,我引用了 2017、10、31 和 1,因为在您的模型中它们似乎是字符串,如果它们是数字,您可以删除引号

我明白了!

例如:

select person_id from attendance where 2017['10'] contains (day = 222 and presence=1)

那就行了。

实际上阅读文档很有帮助:http://orientdb.com/docs/1.7.8/orientdb.wiki/SQL-Where.html

如果给定的集合包含至少一个满足下一个条件的元素,则

contains 运算符可以匹配。就这么简单。