Существуют разные возможные подходы:
1. Получить все документы с полем TransmitterError == true
Вы можете написать запрос, который будет возвращать все документы и использовать свойство size
QuerySnapshot
:
db.collection("Londiani Hill").where("TransmitterError", "==", true)
.get()
.then(function(querySnapshot) {
console.log(querySnapshot.size);
})
.catch(function(error) {
console.log("Error getting documents: ", error);
});
Проблема этого подхода заключается в том, что вы читаете все документы с полем TransmitterError = true
каждый раз, когда хотите их подсчитать , и это имеет свою стоимость.
2. Ведение счетчика
Вы можете увеличивать счетчик каждый раз, когда создаете документ с полем TransmitterError = true
(и уменьшать его, если удаляете do c или изменяете значение TransmitterError
на false
) , Вам нужно будет поддерживать один счетчик на коллекцию.
Для реализации счетчика вы можете использовать Распределенный счетчик на коллекцию ИЛИ использовать один документ "счетчик" на коллекцию, где у вас есть поле счетчика. что вы увеличиваете с firebase.firestore.FieldValue.increment()
, см. do c.
Критерием выбора между двумя типами счетчика является количество обновлений счетчика для определенной коллекции c: фактически, в Cloud Firestore, вы можете только обновлять один документ примерно раз в секунду . Поэтому, если вы знаете, что документы счетчика могут обновляться чаще, чем раз в секунду, вам следует выбрать подход распределенных счетчиков, в противном случае вы можете полагаться на один встречный документ на коллекцию.