我有一个简单的dict定义了一个基本记录,如下所示:
record = {
'h': site_hash, #combination of date (below) and site id hashed with md5
'dt': d, # date - YYYYMMDD
'si': data['site'], # site id
'cl': data['client'], # client id
'nt': data['type'], # site type
}
然后我调用以下内容来更新记录,如果它不存在以下内容:
collection.update(
record,
{'$inc':updates}, # updates contain some values that increase such as events: 1, actions:1, etc
True # do upsert
);
我想知道是否将上述内容更改为以下内容,如果它会有更好的性能,因为下面的代码只显示现有的'h'值而不是h / dt / si / cl / nt而且我只需要ensureIndex 'h'字段。但是,显然每次都会执行$ set,从而导致更多的写入记录,而不仅仅是$ inc。
record = {
'h': site_hash, #combination of date (below) and site id hashed with md5
}
values = {
'dt': d, # date - YYYYMMDD
'si': data['site'], # site id
'cl': data['client'], # client id
'nt': data['type'], # site type
}
collection.update(
record,
{'$inc':updates,'$set':values},
True # do upsert
);
有没有人对这里的最佳做法有任何提示或建议?
答案 0 :(得分:0)
如果'h'已经是唯一的那么你可以在h上创建一个索引,不需要索引'dt','si'等等。在这种情况下,我希望你的第一个例子在这是一个非常沉重的负担,因为它会在日记中创建较小的条目。