2010-05-27 27 views
8

Có thể tìm kiếm theo giá trị khóa trong Apache CouchDB không? Với dữ liệu mẫu bên dưới (khoảng cách để dễ đọc):Tìm kiếm bằng khóa trong Apache CouchDB

{ 
    "_id":"a754a63dcc7f319b02f7ce6de522ca26", 
    "_rev":"1-5bd88e53fe0869b8ce274b49a2c1ddf5", 
    "name":"john smith", 
    "email":"[email protected]", 
    "username":"jsmith" 
} 

Tôi có thể truy vấn cơ sở dữ liệu cho người dùng hoặc người dùng có email [email protected] không? Làm thế nào tôi sẽ đi về điều này?

Trả lời

6

Vâng, chắc chắn là có thể. Bạn sẽ tạo một vài chế độ xem, được sắp xếp danh sách ("chỉ mục") của dữ liệu của bạn, một lần cho mỗi khóa.

Liên kết của Tobias hữu ích. Tuy nhiên tài liệu CouchDB tiêu chuẩn sẽ bao gồm này cũng:

Ví dụ, trong hồ sơ thiết kế của bạn, bạn có thể muốn chế độ xem users_by_email, với các phím dựa trên trường email; khi đó, chế độ xem users_by_name được khóa trên trường username, v.v. Thử nghiệm với chế độ xem tạm thời trong Futon cho đến khi bạn nhận được chức năng của mình hoạt động vừa phải và sau đó lưu trữ nó trong tài liệu thiết kế của bạn vĩnh viễn.

Chúc may mắn!

P.S. Có một cách để kết hợp tất cả các yêu cầu này vào một chế độ xem. Tóm lại, bạn có thể quan trọng trên ["email", "[email protected]"] hoặc ["name": "john smith"] tuy nhiên hãy nhớ rằng, CouchDB được thư giãn: Phương pháp đơn giản ở trên sẽ hoạt động tốt. Khi bạn cảm thấy thoải mái với chế độ xem, bạn có thể khám phá phong cách "được đối chiếu" này.

+0

fyi - các phím phải ngắn vì các phím được lưu trong mọi đối tượng. tôi luôn cố gắng giữ cho em thực sự nhỏ như "email" sẽ là "m" hoặc "e" - "tên người dùng" sẽ là "u" ... chỉ là một fyi - không ai phải làm điều đó nhưng nếu bạn lưu trữ rất nhiều dữ liệu giúp tiết kiệm không gian. – Tobias

2

Bạn không thể tìm kiếm theo giá trị khóa. Bạn chỉ có thể tìm kiếm bằng các phím.

Nếu bạn muốn tìm kiếm email, phát ra [email, bất kỳ dữ liệu nào] trong một số giao diện và thêm ?key='search email' để xem url.

Chỉ tìm kiếm bằng các khóa mang lại lợi ích hiệu suất rất lớn và do đó tính năng này [tìm kiếm theo giá trị khóa] sẽ không bao giờ đến với couchDB.

Các vấn đề liên quan