Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to query documents which contains a sent parameter in Firestore?

I am using the new Cloud Firestore in Android. So I am facing this issue in firestore. I want to query a document, which contains an id in their array fields.

for example, I have a document with a field in firestore containing an array of integers like this: image1

So when I have an id 66940, I can get the document and other documents which contains the id, without returning other documents which don't contain the id 66940.


Other than this approach, I can also use the id (66940) to search it in the document id. My documents id format is like this:
- 66940_88123
- 12323_66940

The idea is, to return documents which contain 66940 in their ID. I've read about a solution here, but I don't really understand how to implement it.

like image 295
Ferry Tan Avatar asked Oct 11 '17 12:10

Ferry Tan


1 Answers

This is a common question, so we have posted some documentation on how to work with arrays in Cloud Firestore: https://firebase.google.com/docs/firestore/solutions/arrays

In short, if you want to query for array membership it's better to store your data as a map of booleans.

So instead of this:

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

You want this:

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

Then you can do this query to search for documents that contain the ID "12345"

db.collection("users").where("userGgIds.12345", "==", true).get()
like image 118
Sam Stern Avatar answered Oct 16 '22 22:10

Sam Stern