2017-03-08 46 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

相关问题