【问题标题】:Perform operations directly on database (esp. Firestore)直接在数据库上执行操作(尤其是 Firestore)
【发布时间】:2020-12-19 00:03:47
【问题描述】:

关于 NoSQL DB 的问题。据我所知,操作是由数据库外的应用程序/网站完成的。例如,如果我需要向列表中添加一个值,我需要

  1. 下载初始列表
  2. 在我的设备上的列表中添加新值
  3. 上传整个更新列表。

最后,大量数据正在传播(初始列表的两倍),没有任何附加值。

有没有办法直接向数据库请求这样的简单操作?

db.collection("collection_key").document("document_key").add("mylist", value)

或者只是增加一个字段?

知道集合中文档的数量也是如此:是否需要下载整套文档才能获得数量?

【问题讨论】:

  • 请编辑问题以更清楚地了解您要修改的数据,显示您现在拥有的代码无法按您预期的方式工作。举一个具体的例子会有所帮助。在 Stack Overflow 上,您还应该将每个帖子限制为一个问题,否则问题可能会因为“需要关注”而被关闭。

标签: database google-cloud-firestore


【解决方案1】:

几个不同的答案:

在 Firestore 中,可以通过“FieldValues”完成许多内在操作,例如递增/递减(通过提供的值,实际上是加/减)。还有数组联合、字段删除等。只需在文档中搜索 FieldValue。对于一般的 NoSQL 是否如此,我不能说。

另一方面,了解文档的数量。在 Firestore 中并非易事 - 但坦率地说,除了您需要知道的人为设计的示例之外,我想不出任何其他情况。很容易设置方法在创建/删除文档时“计数”文档,并将其单独保存,如果出于某种原因您发现自己需要它。

或者你只是想笼统地把 NoSQL 作为一个概念?

【讨论】:

  • 其实我是在一个列表中管理数据,是为了有效避免下载子集合中的所有文档。所以我尝试为每个添加的文档在列表中添加一个标签,并且我想避免不必要的来回。否则,一般来说,我只是试图让其他人比我工作更多:) 在这种情况下,数据库周围的服务器可以避免不必要的数据流。我看看必须回答问题的 FieldValue。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多