用于在orientdb

时间:2017-11-04 20:11:29

标签: 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"
}

我想要的是:

  

“选择person_id,出席人数[2017] [10]当天= 31   和存在= 1“

但是我无法在orientDB中工作..

也许,由于某种原因数据结构很糟糕 - 请告知。

谢谢, 拉法尔

2 个答案:

答案 0 :(得分:0)

试试这个:

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

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

答案 1 :(得分:0)

我明白了!

例如:

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运算符可以匹配。就这么简单。