【问题标题】:Add new field in nested object firestore Android在嵌套对象 Firestore Android 中添加新字段
【发布时间】:2018-11-08 14:50:06
【问题描述】:

Firestore documentation 上有更新嵌套对象字段的代码,但没有关于如何在嵌套对象中添加新字段的代码或文档?

// Assume the document contains:
// {
//   name: "Frank",
//   favorites: { food: "Pizza", color: "Blue", subject: "recess" }
//   age: 12
// }
//
// To update age and favorite color:
db.collection("users").document("frank")
        .update(
                "age", 13,
                "favorites.color", "Red"
        );

正如您在此处看到的,我们正在将favorites.color 更新为Red,但是我们如何在favorites 对象中添加新字段code

假设我想将上面的文档更新如下:

{
  name: "Frank",
  favorites: { food: "Pizza", color: "Blue", subject: "recess", code:32 }
  age: 12
}

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    如果文档确实存在,如果您指定数据应合并到现有文档中,则其内容不会被新提供的数据覆盖,如下所示:

    Map<String, Object> favorites = new HashMap<>();
    Map<String, Object> favorite = new HashMap<>();
    favorite.put("code", 32);
    favorites.put("favorites", favorite);
    rootRef.collection("users").document("frank").set(favorites, SetOptions.merge());
    

    【讨论】:

    • set() 方法的第二个参数用于告诉 Firebase 您不想覆盖该对象,而是要更新它。 NoSQL 数据库中的每个节点都是一个Map,如果是Map,当使用set() 方法时,它会将旧值替换为新值。因此,使用此参数可以避免覆盖该对象。
    • 如何删除该字段?至于如何从上述文件中删除年龄?
    • 您需要使用:favorite.put("age", FieldValue.delete());
    • 你能把文档链接发给我吗?您从哪里获得这些扩展方法?
    • 请看here
    猜你喜欢
    • 2019-02-13
    • 2021-04-14
    • 1970-01-01
    • 2018-08-15
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多