Tôi có một tài liệu trong cơ sở dữ liệu OrientDB tôi (phiên bản 1.0.1), với một cấu trúc chủ yếu là như thế này:Truy vấn một danh sách nhúng trong OrientDB
{
"timestamp": "...",
"duration": 665,
"testcases": [
{
"testName": "test01",
"type": "ignore",
"filename": "tests/test1.js"
},
{
"iterations": 1,
"runningTime": 45,
"testName": "test02",
"type": "pass",
"filename": "tests/test1.js"
},
...
{
"testName": "test05",
"type": "ignore",
"filename": "tests/test1.js"
}
]
}
Làm thế nào tôi có thể truy vấn trên toàn bộ danh sách, ví dụ. nếu tôi muốn tìm tất cả các tài liệu có chứa một testcase với loại "bỏ qua"?
Tôi đã cố gắng truy vấn sau
select from testresult where testcases['type'] = 'ignore'
nhưng kết quả này trong một NumberFormatException
.
select from testresult where testcases[0]['type'] = 'ignore'
hoạt động, nhưng rõ ràng chỉ xem phần tử danh sách đầu tiên của từng tài liệu.
select from testresult where testcases contains(type = 'ignore')
Không cung cấp bất kỳ kết quả nào, nhưng truy vấn được chấp nhận là hợp lệ.
Cập nhật: Truy vấn sau hoạt động như dự định, nếu testcases được lưu trữ dưới dạng tài liệu riêng biệt thay vì dưới dạng danh sách được nhúng.
select from testresult where testcases contains (type = 'ignore')
Tôi gặp vấn đề tương tự như bạn đã làm. Bạn có thể đăng cập nhật của bạn trong câu hỏi và chấp nhận nó. Đó là những gì tôi đang tìm kiếm. –
@DavidLaberge: Cảm ơn bạn đã đề xuất. Câu hỏi quá cũ đến nỗi tôi hoàn toàn không hoàn toàn nhớ được bối cảnh của nó, vì vậy tôi sẽ cảm thấy hơi lo lắng về sự điều động đó. Tôi cũng có cảm giác rằng cách tiếp cận ban đầu của tôi phải hoạt động, ít nhất là theo tài liệu hướng dẫn của OrientDB, vì vậy sẽ cảm thấy sai khi khuyến khích mọi người cơ cấu lại cơ sở dữ liệu của họ như ở trên. – Henrik