2017-10-11 21 views
5

Tôi đang sử dụng Cloud Firestore mới trong Android. Vì vậy, tôi đang đối mặt với vấn đề này trong tin lành. Tôi muốn truy vấn tài liệu có chứa id trong các trường mảng của chúng.Cách truy vấn tài liệu có chứa tham số được gửi trong Firestore?

ví dụ, tôi có một tài liệu với một lĩnh vực trong FireStore chứa một mảng các số nguyên như thế này: image1

Vì vậy, khi tôi có một id 66.940, tôi có thể nhận được các tài liệu và các văn bản khác, trong đó có id , mà không trả lại các tài liệu khác không chứa id 66940.


Ngoài cách tiếp cận này, tôi cũng có thể sử dụng id (66940) để tìm kiếm trong id tài liệu. định dạng văn bản id của tôi là như thế này:
- 66940_88123
- 12323_66940

Ý tưởng là để trả lại tài liệu có chứa 66.940 trong ID của họ. Tôi đã đọc về giải pháp here, nhưng tôi thực sự không hiểu cách triển khai.

Trả lời

5

Đây là một câu hỏi phổ biến, vì vậy chúng tôi đã đăng tải một số tài liệu về cách làm việc với mảng trong Cloud FireStore: https://firebase.google.com/docs/firestore/solutions/arrays

Nói tóm lại, nếu bạn muốn truy vấn cho các thành viên mảng nó tốt hơn để lưu trữ dữ liệu của bạn như một bản đồ của booleans.

Vì vậy, thay vì điều này:

{ 
    name: "sam", 
    userGgIds: [12345, 67890] 
} 

Bạn muốn điều này:

{ 
    name: "sam", 
    userGgIds: { 
    12345: true, 
    67890: true 
    } 
} 

Sau đó, bạn có thể thực hiện truy vấn này để tìm kiếm các tài liệu có chứa ID "12345"

db.collection("users").where("userGgIds.12345", "==", true).get() 
+1

Ah tất nhiên rồi! Tôi ước tôi đã thực hiện kết nối với các tài liệu liên quan đến tài liệu. Vì tầm quan trọng và tính phổ biến của nó nên tuyệt vời khi nhắc lại trong tài liệu rằng đây sẽ là trường hợp sử dụng được đề xuất cho các mối quan hệ thành viên (1: *, *: *). Thời gian để làm một số phép quay: | –

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