I want to get the total number of users in my Firebase Firestore collection. I can get it easily by writing this code:
const [totalUsers, setTotalUsers] = useState(0);
const [newUsers, setNewUsers] = useState(0);
useEffect(() => {
firebase.firestore().collection("Users").get().then((querySnapshot) => {
const TotalUsers = querySnapshot.size
setTotalUsers(TotalUsers)
})
}, []);
But what i want is to get the total number of users with a condition such as the following:
// this is not working, its not showing any results back.
useEffect(() => {
firebase.firestore().collection("Users").where("usersID","!=","101010").get().then((querySnapshot) => {
querySnapshot.forEach((doc) => {
const TotalUsers = doc.size
setTotalUsers(TotalUsers)
})
})
}, []);
But the above code is not working and isn't returning any results.
How can I get the total number of documents in a collection in firebase firestore with a where query?
You've moved the count operation into a loop, which is not needed.
Instead, just add the condition to your read operation and keep the rest the same:
useEffect(() => {
firebase.firestore().collection("Users").where("usersID","!=","101010").get().then((querySnapshot) => {
const TotalUsers = querySnapshot.size
setTotalUsers(TotalUsers)
})
}, []);
Note that reading all user documents just to determine their count is an expensive way to do this, so I recommend reading the documentation on aggregation operators, and Dan's answer on counting documents in Cloud Firestore collection count
Firestore has just launched a native COUNT function which is very cost-efficient. Please refer to the official documentation for more information. You can also refer to this blog.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With