有没有办法直接在python的dicts列表上使用mongodb过滤器?

时间:2017-03-08 16:39:15

标签: python mongodb dictionary

我在变量中有一个dicts列表(让我们称之为 lod ),以及一个代表mongodb过滤器的dict(让我们称之为 my_filter )。有没有办法在 lod 上应用过滤器而不在集合中插入 lod

为了更清楚一点,我想知道是否存在可以执行以下操作的 magic_function

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

由于

1 个答案:

答案 0 :(得分: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))