简体   繁体   中英

how to search at firestore document's field

How to search at firestore documents? if firestore collection contains certain document and if there has a string field at document named 'title'. How can i search specific title using firebase android api.

It is documented in the Docs here , in the last section of the page, titled Get multiple documents from a collection .

Firestore provides a whereEqualTo function to query your data.

Example code (from Docs):

db.collection("cities")
        .whereEqualTo("capital", true) // <-- This line
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (DocumentSnapshot document : task.getResult()) {
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                } else {
                    Log.d(TAG, "Error getting documents: ", task.getException());
                }
            }
        });

I have use MutableLiveData for search the specific user's name .where i pass the user's name and check whether it is available in Firestore or not

Here is my code:-

    public MutableLiveData<UsersModel> getSpecificUser(final String name) {
    final MutableLiveData<UsersModel> usersData = new MutableLiveData<>();
    db.collection("users")
            .whereEqualTo("name", name)
            .addSnapshotListener(new EventListener<QuerySnapshot>() {
                @Override
                public void onEvent(@Nullable QuerySnapshot snapshot, @Nullable FirebaseFirestoreException e) {

                    if(e!=null || snapshot.size()==0){
                        Toast.makeText(activity, "User not found", Toast.LENGTH_SHORT).show();
                    }

                    for (DocumentChange userDoc : snapshot.getDocumentChanges()) {
                        UsersModel user = userDoc.getDocument().toObject(UsersModel.class);

                        if (user.name != null) {
                            if (userDoc.getType() == DocumentChange.Type.ADDED || userDoc.getType() == DocumentChange.Type.MODIFIED) {
                                usersData.setValue(user);
                            }
                        }
                    }
                }
            });

    return usersData;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM