在以下示例中,如何从Cloud Firestore查询特定日期(20210205
)和特定用户(ala
)的所有时间戳?现在,我可以下载整个文档并在设备上进行过滤。但这是无效的。
FirebaseFirestore db = FirebaseFirestore.getInstance();
db.collection("companies").document("softnet").collection("users")
.document("ala").get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
Log.d(TAG, "result: " + task.getResult().getData());
}
});
您可以FieldPath.documentId()
按此处所示进行过滤,以ala
在查询中获取文档。但是,正如您自己说的那样,无法使用通配符字段进行过滤。
我很快想到的最好的方法是存储一组日期:
dates: ["20210203", "20210205", "20210207"]
如果使用arrayUnion
运算符向该数组添加值,则永远不会出现重复项,然后可以array-contains
用来检查数组是否包含特定日期。
因此,总的来说会是这样(语法错误肯定是可能的):
CollectionRefefence users = db.collection("companies").document("softnet").collection("users");
users
.whereEqualTo(FieldPath.documentId(), "ala")
.whereArrayContains("date", "20210207");
坦白说,您必须考虑复杂性是否值得,因为仅读取此查询返回的单个文档并检查应用程序代码中的date字段可能会更简单。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句