我正在使用Node.js,并且不希望用每一个小更新覆盖整个实体,并且大部分时间只需更新特定属性,例如计数器。
关于如何在文档中执行此操作,没有明显的参考。
Node.js版Google Cloud Datastore是否支持Mongodb $ set等部分更新?
答案 0 :(得分:5)
没有DataStore API可以更新put()和putmulti()以外的实体,所以它很安静。
一些阅读from here说明原因。
在内部,App Engine将实体存储在协议缓冲区中,用于序列化结构化数据的有效机制;有关详细信息,请参阅开源项目页面。不是将每个实体属性存储为相应Bigtable行中的单个列,而是使用单个列,其中包含二进制编码的协议缓冲区,其中包含给定实体的每个属性的名称和值。
简而言之,数据存储区中的实体行是底层存储方案中的单个二进制值,这就是没有用于部分更新的API的原因。
答案 1 :(得分:0)
没有直接API只更新实体的一个属性。
但是,您可以使用Datastore transactions,而不是获取实体,修改它并更改它(使用两个不同的数据存储区API调用)。这是以原子方式实现这一目标的推荐方法。
交易是一组或多个实体上的一组Google Cloud Datastore操作。每个事务都保证是原子的,这意味着事务永远不会部分应用。应用事务中的所有操作,或者不应用任何操作。
example in the documentation正在解释如何使用事务“使用相对于其当前值的新属性值更新实体:。这正是您要查找的内容。