0

我对 android firstore 文档和子集合感到困惑。

此示例将生成以下数据结构:

root-> a -> b -> c -> d -> field1:apple
                           field2:orange

代码如下:

private void addItem() {
    FirebaseFirestore rootRefs = FirebaseFirestore.getInstance();
    Map<String, Object> item = new HashMap<>();
    item.put("field1", "apple");
    item.put("field2", "orange");
    rootRefs.collection("a")
            .document("b")
            .collection("c")
            .document("d")
            .set(item)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {

                }
            });
}

子集合和文档节点交替出现:a,c vs. b,d。

但是如何在没有 d 节点的情况下实现类似的数据结构(如下):

root-> a -> b -> d -> field1:apple
                      field2:orange

由于 .add 方法只能用于文档而不是集合,我们不能只删除 d(文档),因为 c(集合)没有 add 方法。

我应该如何修改我的代码?

4

1 回答 1

1

由于 .add 方法只能用于文档而不是集合,我们不能只删除 d(文档),因为 c(集合)没有 add 方法。

你没有办法做到这一点。文档应该存在于集合或子集合之下。一个文档不能存在于另一个文档之下。

根据官方文档,唯一允许的结构如下:

db.collection('coll').doc('doc').collection('subcoll').doc('subdoc')

Firestore 中无法将一个集合存储在其他集合之下。所以下面这行代码是不允许的:

db.collection('coll').collection('subcoll').doc('subdoc') //Not allowed

因为无法将文档存储在其他文档之下。

db.collection('coll').doc('doc').doc('subdoc') //Not allowed
于 2019-02-21T17:23:58.647 回答