Cloud Firestore中,有三个写入操作:

1) 加上

2)设置

3)更新

在文档中,它说使用set(object, {merge: true})会将对象与现有对象合并.

当您使用update(object)时,也会发生同样的情况 那么,如果有区别的话,有什么不同呢?谷歌会重复逻辑,这似乎很奇怪.

推荐答案

我理解差异的方式:

  • 没有mergeset将覆盖文档,如果文档还不存在,则创建文档

  • 包含mergeset将更新文档中的字段或在文档不存在时创建它

  • update将更新字段,但如果文档不存在,则将失败

  • create将创建文档,但如果文档已存在,则会失败

您提供给setupdate的数据类型也不同.

对于set,您必须始终提供文档形状的数据:

set(
  {a: {b: {c: true}}},
  {merge: true}
)

对于update,您还可以使用字段路径更新嵌套值:

update({
  'a.b.c': true
})

Database相关问答推荐

更新数据后,TableView停止按搜索栏进行筛选

如何自动更新不同的数据库?

MongoDB根据嵌套文档中的值匹配数组

为什么 INNER JOIN 不等于(!=)永远挂起

502 是数据库错误的适当状态代码吗?

在不稳定的网络中保持分布式数据库同步

使用 SQLAlchemy Core 批量插入列表值

是否可以使用 Mongo 的 Object ID作为其唯一标识符?如果是这样,如何将其转换为字符串并按字符串查找?

使用 Flask 时 Python 中持久数据库连接的最佳实践

Neo4j:逐步创建自动索引

Tornado 的非阻塞 ORM?

审计表:一个表或一个表的每个字段

Mysql用户创建脚本

我什么时候应该考虑使用内存数据库,需要注意什么问题?

限制一个 sqlite 表的最大行数

如何在 Postgres 9.6+ 中生成长度为 N 的随机、唯一的字母数字 ID?

表模块与域模型

Redis Pub/Sub 和 Redis Stream 之间的主要区别是什么?

MySQL 从一个数据库插入另一个数据库

最佳事件采购数据库策略