Java 检查Firestore集合中是否存在文档

Java 检查Firestore集合中是否存在文档,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我有一个Firestore集合树,我计划只在其中存储一个文档。我想检查该集合是否包含该文档,如果包含,则检索该文档的id!有什么想法/想法吗 谢谢:)试试这个 FirebaseFirestore firestore = FirebaseFirestore.getInstance(); firestore.collection("users").whereEqualTo("user_uid", user.getUid()) .limit(1).get() .addOnComplet

我有一个Firestore集合树,我计划只在其中存储一个文档。我想检查该集合是否包含该文档,如果包含,则检索该文档的id!有什么想法/想法吗

谢谢:)

试试这个

FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.collection("users").whereEqualTo("user_uid", user.getUid())
    .limit(1).get()
    .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                        @Override
                        public void onComplete(@NonNull Task<QuerySnapshot> task) {
                          if (task.isSuccessful()) {
                            boolean isEmpty = task.getResult().isEmpty();
                          }
                        }
                    });
FirebaseFirestore firestore=FirebaseFirestore.getInstance();
firestore.collection(“users”).whereEqualTo(“user\u uid”,user.getUid())
.limit(1.get())
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
布尔值isEmpty=task.getResult().isEmpty();
}
}
});

使文档结构如下所示:

collectionName(集合)->documentId(文档)->id=documentId(和其他字段)

现在进行查询:

FirebaseFirestore firestoreDatabase= FirebaseFirestore.getInstance();
firestoreDatabase.collection(COLLECTION_NAME)
            .whereEqualTo(DOCUMENT_ID, documentId)
            .get()
            .addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    if (task.getResult().getDocuments().size() > 0)
                        // Here is your document with id
                }
            });

如果要根据特定文档的
文档id
检查该文档是否存在,请使用以下代码行:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference docIdRef = rootRef.collection("yourCollection").document(docId);
docIdRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document.exists()) {
                Log.d(TAG, "Document exists!");
            } else {
                Log.d(TAG, "Document does not exist!");
            }
        } else {
            Log.d(TAG, "Failed with: ", task.getException());
        }
    }
});
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
DocumentReference docIdRef=rootRef.collection(“yourCollection”).document(docId);
docIdRef.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
DocumentSnapshot document=task.getResult();
if(document.exists()){
Log.d(标记“文档存在!”);
}否则{
Log.d(标记“文档不存在!”);
}
}否则{
Log.d(标记“失败原因:”,task.getException());
}
}
});
如果没有文档id,则需要使用查询并根据特定属性的值查找该文档,如下所示:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference yourCollRef = rootRef.collection("yourCollection");
Query query = yourCollRef.whereEqualTo("yourPropery", "yourValue");
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
    @Override
    public void onComplete(@NonNull Task<QuerySnapshot> task) {
        if (task.isSuccessful()) {
            for (QueryDocumentSnapshot document : task.getResult()) {
                Log.d(TAG, document.getId() + " => " + document.getData());
            }
        } else {
            Log.d(TAG, "Error getting documents: ", task.getException());
        }
    }
});
FirebaseFirestore rootRef=FirebaseFirestore.getInstance();
CollectionReference yourCollRef=rootRef.collection(“yourCollection”);
Query Query=yourCollRef.whereEqualTo(“yourproperty”、“yourValue”);
query.get().addOnCompletListener(新的OnCompletListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(QueryDocumentSnapshot文档:task.getResult()){
Log.d(标记,document.getId()+“=>”+document.getData());
}
}否则{
Log.d(标记“获取文档时出错:”,task.getException());
}
}
});
DocumentReference docRef=db.collection(“items”).document(“您的id”);
docRef.addSnapshotListener(新的EventListener(){
@凌驾
public void OneEvent(DocumentSnapshot快照,FirestoreException fe){
if(snap.exists()){
//更新
}否则{
//插入
}
}
});
对于Java(非android)这对我不起作用,侦听器从未触发。但是docRef.get().get()存在();最后工作了。
DocumentReference docRef = db.collection("items").document("your_id");
            docRef.addSnapshotListener(new EventListener<DocumentSnapshot>() {
                @Override
                public void onEvent(DocumentSnapshot snap, FirestoreException fe) {
                    if (snap.exists()) {
                        //update
                    } else {
                        //Insert
                    }
                }

            });