OrientDBには次のような構造があります。各ノードはuser_idで表される特定のユーザで、すべての購入情報は以下のように埋め込みリストに保持されます。OrientDBの埋め込みリストの日付日時クエリ
[
{
"user_id": 1,
"purchase_info": [ {
"product_id": 100,
"timestamp": "2016-04-26 01:50:00"
},
{
"product_id": 200,
"timestamp": "2016-04-26 10:50:00"
}
]
},
{
"user_id": 2,
"purchase_info": [ {
"product_id": 100,
"timestamp": "2016-04-26 10:50:00"
},
{
"product_id": 300,
"timestamp": "2016-04-26 20:50:00"
}
]
},
{
"user_id": 3,
"purchase_info": [ {
"product_id": 100,
"timestamp": "2016-04-26 04:50:00"
}
]
},
{
"user_id": 4,
"purchase_info": [ {
"product_id": 300,
"timestamp": "2016-04-26 05:50:00"
}
]
}
]
ここで、特定の日付期間内に商品を購入したユーザーを探したいと思います。日時の範囲が2016年4月26日午前1時00分00秒と2016年4月26日午前4時55分00秒の間にある場合
は、例えば、戻り結果は、1 USER_IDと3
します埋め込みリストを照会するには、WHERE <value> IN <key name>
を使用する必要があります。しかし、私はそのフォーマットを使用して範囲を使用する方法を見つけることができませんでした。
また、タイムスタンプ上の範囲外クエリについては、asDateTime()
を使用することができませんでした。
例えばこのクエリは何も返しません:
SELECT from V where "2016-04-26 01:50:00" in purchase_info.timestamp.asDateTime()