2017-03-08 43 views
0

我有一個變量內的字典列表(我們稱之爲lod)和一個代表一個代表一個mongodb過濾器的字典(我們稱之爲my_filter)。有沒有一種方法可以在lod上應用過濾器,而無需在集合中插入lod有沒有辦法直接在python列表上使用mongodb過濾器?

是有點更清晰,我想知道是否存在一些magic_function,將做到以下幾點:

>>> lod = [{"name": "alice"}, {"name": "bob"}, {"name": "carol"}] 
>>> my_filter = {"name": {"$in": ["alice", "carol"]}} 
>>> magic_function(lod, my_filter) 
[{'name': 'alice'}, {'name': 'carol'}] 

感謝

回答

0

您或許可以使用MongoDB的嘲弄庫並自己實施magic_function。 https://github.com/mongomock/mongomock

下面是一個例子:

def magic_function(lod,my_filter): 
    collection = mongomock.MongoClient().db.collection 
    for doc in lod: 
     collection.insert(doc) 

    res = collection.find(my_filter) 
    result = [] 
    for doc in res: 
     del doc['_id'] 
     result.append(doc) 
    return result 

lod = [{"name": "alice"}, {"name": "bob"}, {"name": "carol"}] 

my_filter = {"name": {"$in": ["alice", "carol"]}} 

print(magic_function(lod, my_filter)) 
+0

謝謝,這正是我一直在尋找。 – user3301993

相關問題