我想做一个查询,根据一个潜在值列表检查文档字段的值。
不幸的是,firestore中没有可以帮助您实现这一点的查询。你能做的是把所有的文件
myCollection
收集所需文档字段的值,并将其与以下潜在值列表进行比较:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference myCollectionRef = rootRef.collection("myCollection");
myCollectionRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<String> yourList = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
DocumentReference reference = document.getDocumentReference("refField");
String stringReference = reference.getPath();
if (yourList.contains(stringReference)) {
Log.d(TAG, "Reference found!");
}
}
}
}
});
我假设您的列表包含字符串类型的文档引用。如您所见,我们需要序列化
DocumentReference
通过使用
getPath()
方法获取描述文档在数据库中位置的字符串。将该路径字符串反序列化回
文件参考
对象,使用
FirebaseFirestore.getInstance().document(path)
方法。
如果你对分页感兴趣,
this
是如何通过将查询游标与limit()方法组合来对查询分页的。我也建议你看看这个
video
为了更好的理解。