Firebase 将集合设置为子集合

Firebase 将集合设置为子集合,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,我想知道是否有更直接的方法将集合设置为新文档中的子集合。我目前的方法是: 获取将用作子集合的集合A 创建对新DocA 将一些数据设置到DocA 在DocA 使用batch()并循环通过CollectionA,在CollectionA的每个文档上使用batch(set,CollectionA.doc.data()) batch.commit()将所有文档从CollectionA提交到CollectionB 有没有更简单的方法来实现这一点 比如: 我尝试过一些类似的方法,但是CollectionA最

我想知道是否有更直接的方法将集合设置为新文档中的子集合。我目前的方法是:

  • 获取将用作子集合的集合A
  • 创建对新
    DocA
  • 将一些数据设置到
    DocA
  • DocA
  • 使用
    batch()
    并循环通过
    CollectionA
    ,在
    CollectionA的每个文档上使用
    batch(set,CollectionA.doc.data())
  • batch.commit()
    将所有文档从
    CollectionA
    提交到
    CollectionB
  • 有没有更简单的方法来实现这一点

    比如:


    我尝试过一些类似的方法,但是
    CollectionA
    最终生活在
    CollectionB
    中的单个文档中。而不是
    CollectionA
    中的所有文档成为
    CollectionB
    中的文档

    没有API将文档从一个集合复制到另一个集合。您必须将文档读取给客户机,然后将其写入目标集合


    我不认为有任何更快的方法可以通过批量复制来实现这一点。请注意,一个批处理最多只能包含500个写入操作,因此您可能必须执行多个。

    是否询问是否可以在一次调用中创建新文档和子集合?答案是“不”。如果您询问是否可以在不创建其所在文档的情况下创建子集合,答案是“是”:
    db.collection('CollectionB/document1/CollectionA')。添加(…)
    。但我不确定我是否理解这些步骤。您是否正在尝试复制集合子集合中的所有文档?如果是:为什么?我完全支持数据复制,但乍一看这听起来有点过分。基本上,我想要
    CollectionA
    的快照(如当前状态,而不是Firestore快照),设置为
    DocA
    中的子集合。换句话说,我想在创建
    DocA
    时,将
    CollectionA
    s状态保存为
    DocA
    的子集合。啊,这很有意义。我不认为有任何更快的方法可以通过批量复制来实现这一点。请注意,一个批可以包含不超过500个写入操作,因此您可能必须执行多个。
    CollectionA
    包含约12个文档,但这些文档是嵌套对象/数组。对于查询/更新,我认为它作为子集合比包含数组的嵌套对象更有用。因此,在本例中,
    批处理
    没有太多问题,但希望确保没有更简单的方法。
    DocA.collection('CollectionB').set(CollectionA)