Một số hệ quản trị cơ sở dữ liệu phổ biến – Phần 6: Tạo và truy vấn View trong CouchDB
Trong CouchDB, view là một cửa sổ vào các tài liệu có trong cơ sở dữ liệu. View là cách chính mà tài liệu được truy cập trong tất cả các trường hợp trừ các trường hợp đặc biệt, chẳng hạn như các hoạt động CRUD riêng lẻ mà bạn đã thấy trong bài viết ở Phần 5: Tìm hiểu về CouchDB. Trong bài này, bạn sẽ khám phá cách tạo các hàm tạo nên một view. Bạn cũng sẽ tìm hiểu cách thực hiện các truy vấn đặc biệt đối với các view bằng cách sử dụng cURL. Cuối cùng, bạn sẽ import dữ liệu music, dữ liệu này sẽ làm cho view nổi bật hơn và trình bày cách sử dụng couchrest, một thư viện Ruby phổ biến để làm việc với CouchDB.
Truy cập document thông qua view
Một view bao gồm các hàm ánh xạ và hàm rút gọn được sử dụng để tạo danh sách các cặp khóa-giá trị được sắp xếp theo thứ tự. Cả khóa và giá trị đều có thể là bất kỳ JSON hợp lệ nào. View đơn giản nhất được gọi là _all_docs. Nó được cung cấp sẵn cho tất cả các cơ sở dữ liệu và chứa một mục nhập cho mỗi tài liệu trong cơ sở dữ liệu, được khóa bởi chuỗi _id của nó
Để truy xuất tất cả nội dung trong cơ sở dữ liệu, hãy tạo request GET cho view _all_docs.
$ curl "${COUCH_ROOT_URL}/music/_all_docs"
{
"total_rows": 1,
"offset": 0,
"rows": [
{
"id": "2ac58771c197f70461056f7c7e0001f9",
"key": "2ac58771c197f70461056f7c7e0001f9",
"value": {
"rev": "7-d37c47883f4d30913c6a38644410685d"
}
}]
}
Bạn có thể thấy trong đầu ra trước đó, một tài liệu mà chúng tôi đã tạo cho đến nay. Phản hồi là một đối tượng JSON chứa một mảng các hàng. Mỗi hàng là một đối tượng có ba trường:
- id là _id của tài liệu.
- key là khóa JSON được tạo bởi các hàm mapreduce.
- value là giá trị JSON được liên kết, cũng được tạo thông qua mapreduce.
Trong trường hợp của _all_docs, trường id và trường key khớp nhau, nhưng đối với view tùy chỉnh thì điều này hầu như không bao giờ xảy ra
Mặc định, view sẽ chỉ bao gồm siêu dữ liệu cho các tài liệu trong trường giá trị chứ không bao gồm nội dung của từng tài liệu. Để truy xuất tất cả các trường của tài liệu, hãy thêm tham số URL include_docs=true.
$ curl "${COUCH_ROOT_URL}/music/_all_docs?include_docs=true"
{
"total_rows": 1,
"offset": 0,
"rows": [
{
"id": "2ac58771c197f70461056f7c7e0001f9",
"key": "2ac58771c197f70461056f7c7e0001f9",
"value": {
"rev": "7-d37c47883f4d30913c6a38644410685d"
},
"doc": {
"_id": "2ac58771c197f70461056f7c7e0001f9",
"_rev": "7-d37c47883f4d30913c6a38644410685d",
"name": "The Beatles",
"albums": [
{
"title": "Help!",
"year": 1965
},
{
"title": "Sgt. Pepper's Lonely Hearts Club Band",
"year": 1967
},
{
"title": "Abbey Road",
"year": 1969
}]
}
}]
}
Tại đây, bạn có thể thấy rằng các thuộc tính khác, tên và album, đã được thêm vào đối tượng giá trị ở đầu ra. Với cấu trúc cơ bản này, chúng ta hãy tạo views cho riêng mình
Tạo view đầu tiên
Bây giờ chúng ta đã có một cái nhìn tổng quan sơ bộ về cách hoạt động của view, hãy thử tạo view của riêng mình. Để bắt đầu, chúng tôi sẽ tạo lại view _all_docs và sau đó, sẽ tạo các view ngày càng phức tạp để trích xuất thông tin sâu hơn từ các tài liệu của chúng tôi để lập chỉ mục.
Để tạo view, hãy mở Fauxton như chúng ta đã làm trong Phần 5: Tìm hiểu về CouchDB. Tiếp theo, hãy mở cơ sở dữ liệu music bằng cách nhấp vào liên kết. Nhấp vào biểu tượng dấu cộng bên cạnh Document thiết kế rồi nhấp vào View mới. Fauxton sẽ đưa bạn đến một trang giống như hình dưới đây.
Code trong Map function ở bên phải sẽ giống như sau:
function(doc) {
emit(_doc.id, 1);
}
Bài viết thuộc các danh mục
Bài viết được gắn thẻ
BÌNH LUẬN (0)
Hãy là người đầu tiên để lại bình luận cho bài viết !!
Hãy đăng nhập để tham gia bình luận. Nếu bạn chưa có tài khoản hãy đăng ký để tham gia bình luận với mình
Bài viết liên quan
CouchDB là cơ sở dữ liệu định hướng tài liệu dựa trên JSON và REST-based. Được phát hành lần đầu tiên vào năm 2005, CouchDB được thiết kế dành cho web và vô số sai sót, lỗi và trục trặc đi kèm với nó