使用mongo语法更新本地python字典,不使用mongo



我有一个使用mongo的代码库。我想在持久化代码被调用和实际mongo数据库之间添加一个缓存层,主要是为了我可以使用readPreference=secondaryPreferred而不会破坏我的应用程序的其余部分(这取决于某种程度的强读写后一致性)。

是否有一种方法让我采取一个潜在的嵌套字典和应用mongodb更新语法,而不一定使用mongodb本身?

例如,我可能有这样的代码:
cache = {}
def _add_to_cache(key, doc):
cache['key'] = doc

def _update_cache(key, update):
cache['key'] = not_mongo_lib.apply_update(cache['key'], update)
_add_to_cache('foo', {'a': {'b': 1}})
_update_cache('foo', {'$set': {'a.b': 2}})
print(cache['foo'])  # {'a': {'b': 2}}

换句话说,是否有一个库或实现利用mongodb更新语法之外的mongodb ?

感谢@rickhg12hs为我指向mongomock。因为我的目标是实现一个TTL缓存层,所以我最终只是直接使用mongomock和一个TTL索引。比如:

import mongomock
cache = mongomock.MongoClient().db.cache
cache.create_index([(CACHE_FIELD, 1)], expireAfterSeconds=10)
cache.insert_one(doc)
cache.find(query)

我最终不需要直接更新缓存——相反,我删除并重新插入:

def do_update(query, update):
updated = realmongo.find_one_and_update(query, update, pymongo.AFTER)
cache.remove(query)
cache.insert(update)
return updated

相关内容

  • 没有找到相关文章

最新更新