Firebase 如何按值名称删除文档?

Firebase 如何按值名称删除文档?,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,在Firestore中是否可以删除一些“值名称”相同的文档 例如:我有一些UID作为集合中的文档。在这些文档中,将保存两种类型的“值名称”。第一个“值名”称为“byCar”。第二个“值名”称为“byFoot”。现在我想删除所有文档,其中“Value Name”等于“byCar”。“值名”为“byFoot”的所有其他文档将保持不变。这样的事情可能吗 我用flatter/Dart编程,如果有人能给我一个答案,那就太棒了,因为我在互联网上找不到任何东西。Firestore不支持更新查询,你向服务器发送

在Firestore中是否可以删除一些“值名称”相同的文档

例如:我有一些UID作为集合中的文档。在这些文档中,将保存两种类型的“值名称”。第一个“值名”称为“byCar”。第二个“值名”称为“byFoot”。现在我想删除所有文档,其中“Value Name”等于“byCar”。“值名”为“byFoot”的所有其他文档将保持不变。这样的事情可能吗


我用flatter/Dart编程,如果有人能给我一个答案,那就太棒了,因为我在互联网上找不到任何东西。

Firestore不支持更新查询,你向服务器发送查询,它会更新(或者在你的情况下删除)所有匹配的文档。要编写或删除文档,您需要知道其在应用程序代码中的整个路径

因此,这意味着您需要执行两个步骤来删除文档:

  • 执行查询以查找与您的条件匹配的所有文档
  • 在结果上循环并删除它们
  • 在代码中,类似于:

    refUser.where("city", isEqualTo: "CA").getDocuments().then((querySnapshot){
      for (DocumentSnapshot documentSnapshot in querySnapshot.documents){
        documentSnapshot.reference.delete();
      });
      snapshot.documents.first.reference.delete();
    });
    
    另见:


    Firestore不支持更新查询,即向服务器发送查询,然后服务器更新(或删除)所有匹配的文档。要编写或删除文档,您需要知道其在应用程序代码中的整个路径

    因此,这意味着您需要执行两个步骤来删除文档:

  • 执行查询以查找与您的条件匹配的所有文档
  • 在结果上循环并删除它们
  • 在代码中,类似于:

    refUser.where("city", isEqualTo: "CA").getDocuments().then((querySnapshot){
      for (DocumentSnapshot documentSnapshot in querySnapshot.documents){
        documentSnapshot.reference.delete();
      });
      snapshot.documents.first.reference.delete();
    });
    
    另见:


    您的代码如下所示:

    QuerySnapshot querySnapshot = await db
      .collection("yourPathCollection")
      .where("Value Name", isEqualTo: "byCar")
      .get()
      .then((querySnapshot) {
    querySnapshot.docs.forEach((doc) {
      doc.reference.delete();
    });
    return null; });
    

    可能Cloud Firestore会阻止您的请求,因此您需要根据需要更改数据库规则。

    您的代码如下所示:

    QuerySnapshot querySnapshot = await db
      .collection("yourPathCollection")
      .where("Value Name", isEqualTo: "byCar")
      .get()
      .then((querySnapshot) {
    querySnapshot.docs.forEach((doc) {
      doc.reference.delete();
    });
    return null; });
    

    可能Cloud Firestore会阻止您的请求,因此您需要根据需要更改数据库规则。

    非常感谢。我明白,这可能就是我在网上找不到东西的原因,哈哈。我会试试看。:)我在Stack Overflow上搜索“更新多个文档”时发现了一些链接。再次感谢,我发现我的搜索请求是错误的…明白了。作为将来的参考:如果你已经尝试了一些东西,一定要在你的问题中包含这些。如果我们能看到你已经尝试过的东西,那么找出你哪里出了问题就容易多了。如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就知道你得到了(足够的)帮助。还有,对不起,我想我写得有点乱。我的意思是,我在互联网上搜索了错误的东西,所以我无法自己找到解决方案。谢谢你的时间和帮助!:)非常感谢。我理解,这可能是我无法在互联网上找到某些内容的原因。哈哈。我会尝试一下。:)我在Stack Overflow中包含了一些通过搜索“更新多个文档”找到的链接。再次感谢,我发现我的搜索请求是错误的……明白了。作为将来的参考:如果你已经尝试了一些东西,一定要在你的问题中包含这些。如果我们能看到你已经尝试过的东西,那么找出你哪里出了问题就容易多了。如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就知道你得到了(足够的)帮助。还有,对不起,我想我写得有点乱。我的意思是,我在互联网上搜索了错误的东西,所以我无法自己找到解决方案。谢谢你的时间和帮助!:)非常感谢,我想我已经找到了类似于您的代码的东西。我会尝试一下,如果它有效的话,我会稍后再写。:)我已经在一个类似的示例中测试了这段代码,它有效了,如果它对您有效,请将此答案标记为有用:)我标记了您的答案,感谢您的帮助!:)非常感谢,我想我已经找到了类似于您的代码的东西。我会尝试一下,如果成功的话,我会稍后再写。:)我已经在一个类似的例子中测试了这段代码,它成功了,如果它对您有效,请将此答案标记为有用:)我标记了您的答案,感谢您的帮助!:)