有没有办法根据条件将另一个函数(如limit())绑定到pymongo查询?

时间:2017-10-17 10:42:16

标签: python pymongo

我的查询如下:

def get_data(self, limit=None):
    # I just want to add limit() in case it is set, not otherwise
    self.collection.find(condition)

self.collection指的是班级中的集合。如果limit参数设置,我需要将limit() pymongo函数绑定到查询。

NB:限制只是一个示例,它可以是任何函数,如sort等等。所以我只想知道是否有一种绑定params的机制?< / p>

2 个答案:

答案 0 :(得分:1)

你的意思是这样吗?:

def get_data(self, limit=None):
    cursor = self.collection.find(condition)
    if limit is not None:
        return cursor.limit(limit)
    else:
        return cursor

答案 1 :(得分:1)

低于2的查询返回相同的结果

self.collection.find()
self.collection.find().sort([("$natural", pymongo.ASCENDING)])

Sort Natural Order

以及2个以下查询返回相同的结果

self.collection.find()
self.collection.find().limit(0)

0的限制相当于无限制。 source

因此您可以将这些组合起来并编写单行查询,如下所示

self.collection.find().limit(self.limit or 0).sort(self.sort or [("$natural", pymongo.ASCENDING)])

如果您设置了限制/排序值,则会被应用,否则将被忽略。