假设我有 100 个带字段的文档
姓名
年龄
地址
现在假设我的业务模式正在改变,我想添加新的现场呼叫PhoneNumber
。
如何在所有100个文档中添加字段电话号码
?NoSQL数据库上有这样的东西吗?
在NoSQL数据库上可以有这样的东西吗?
是的,它是!假设您有一个如下所示的< code>User模型类:
public class User {
private String name;
private int age;
private String address;
private String phoneNumber; //Property that is newly added
public User() {}
public User(String name, int age, String address, String phoneNumber) {
this.name = name;
this.age = age;
this.address = address;
this.phoneNumber = phoneNumber;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getPhoneNumber() { return phoneNumber; }
public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; }
}
要实际添加一个新属性并相应地更新它,您需要使用setters。如果直接在公共字段上设置值,那么设置器不是强制性的。
如何在所有100个文档中添加字段电话号码?
正如@Doug Stevenson在他的回答中提到的,要解决这个问题,您需要迭代用户
集合中的所有文档。所以请使用以下代码行:
db.collection("users").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
User user = document.toObject(User.class);
user.setPhoneNumber("+1-111-111-111"); //Use the setter
String id = document.getId();
db.collection("users").document(id).set(user); //Set user object
}
}
}
});
此代码的结果是将< code>phoneNumber属性添加到所有< code>User对象,默认值为< code> 1-111-111-111。如果方便的话,您也可以将该值设置为< code>null。最后,更新后的对象被设置在相应的引用上。
如果你没有使用模型类,请看我在这篇文章中的答案。
您必须编写代码来迭代要更新的所有文档,然后实际更新每个文档中的新值。Firestore 没有与“更新表名集 x=y 其中......”类似的命令在 SQL 中。
问题内容: 我有这个POJO课: 这是我的数据库: 有100名学生,有些活跃,有些则没有。我想让所有学生都不活跃。 码: 如何使用POJO 更新为false?谢谢! 问题答案: 您可以通过非常简单的方式解决此问题。除了getter之外,还应该像这样为您的属性创建一个setter : 创建了setter之后,就可以像这样直接在对象上使用它: 该代码的结果将是将所有学生对象的active属性更新为
我有这个POJO类: 这是我的数据库: 有100名学生,有些是活跃的,有些不是。我想让所有学生都不活跃。 法典: 如何使用POJO将更新为假?谢谢!
问题内容: 没有关于如何在Firestore中的文档中添加子集合,如何使用Web应用程序添加子集合的文档? 甚至像这样尝试过,但没有奏效。如何使用代码在应用程序中添加子集合?有什么办法可以做到,还是使用Firebase实时数据库会更好?如果是这样,请让我知道如何在Firebase中执行此操作,我也想这样添加, 但我却收到这样的错误,错误说明了这一点 问题答案: 如果更改为,您的代码应该可以工作。然
我是消防队的新手。消防队的文件说... 重要提示:与Firebase实时数据库中的“推送ID”不同,Cloud Firestore自动生成的ID不提供任何自动排序。如果希望能够按创建日期对文档进行排序,则应将时间戳存储为文档中的字段。
在我们仔细处理之后。我仍然无法获取自动生成的文档ID。没有“then”选项。我的代码: 创建后如何获取ID?
问题内容: 我需要为索引中的所有文档添加一个新字段,而无需下拉文档并将其推回备份(这将需要大约一天的时间)。是否可以使用_BULK API实现此目的? 我还研究了update_by_query插件,似乎只需要将它们拉下并推回自己的位置即可。 问题答案: 是的,批量API支持更新,可以使用部分文档或脚本添加新字段。要遍历文档ID,请执行扫描并在将fields参数设置为空数组的情况下滚动。