3

重复/列表属性的索引如何工作,我在某处读到添加到列表只会添加一个索引,不会算作修改索引。这仍然正确吗?

从列表中删除是否相同,删除列表中的值是否会删除该单个索引并计为 2 次写入?

如果我的理解是正确的,那么这个

class MyModel(ndb.Model):
    my_list = ndb.IntegerProperty(repeated=True)

e = ndb.Key(MyModel, 100).get()
e.my_list.append(50)
e.put()
e.my_list.append(25)
e.put()
e.my_list.remove(50)
e.put()

更新是,1 次写入 + 2 次索引写入,然后是另一个,1 次写入 + 2 次索引写入,然后是 1 次写入 + 2 次索引写入以进行删除。

那是对的吗?

我的最后一个问题是每个实体的 5000 个索引限制仍然存在吗?因为我尝试运行 10k localhost 它似乎工作。

额外的:

e.my_list.insert(10)
e.put()

这只是添加另一个索引吗?还是索引在其中保存列表索引,从而调整整个列表?

4

1 回答 1

2

我想出了这个

appstats_CALC_RPC_COSTS = True

在 appstat 中启用计费计算器,从来不知道这一点。答案与添加相同,它只执行 1 写入 + 2 索引写入添加或从列表中删除,无论它在哪里。

在列表中也有重复值并删除一个只会导致 1 次写入,这意味着它只存储单个索引以进行重复。它也不关心列表中的顺序,重新排序只会导致实体放置。

于 2012-09-02T00:00:39.393 回答