簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM