[英]Update a local python dictionary using mongo syntax, without mongo
我有一個使用 mongo 的代碼庫。 我想在調用持久性代碼的位置和實際的 mongo db 之間添加一個緩存層,主要是這樣我就可以使用readPreference=secondaryPreferred
而不會破壞我的應用程序的其余部分(這取決於某種程度的強讀后寫一致性)。
有沒有辦法讓我使用潛在嵌套的字典並應用 mongodb 更新語法而不必使用 mongo 本身?
例如,我可能有如下代碼:
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}}
換句話說,是否有在 mongo 之外使用 mongodb 更新語法的庫或實現?
感謝@rickhg12hs 將我指向mongomock 。 因為我的目標是實現一個 TTL 緩存層,所以我最終只是直接使用帶有 TLL 索引的 mongomock。 就像是:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.