编写具有多个要求的mongodb过滤器

时间:2013-12-06 20:16:15

标签: python django mongodb

如何编写一个过滤器,该过滤器返回范围,小于某个值以及大于其他值的数据。

2 个答案:

答案 0 :(得分:1)

这是一个直接在mongo shell中运行的解决方案。这不是特定于python的。

db.documents.find({ $and: [ 
    { timestamp: { $gte : 111 } }, 
    { timestamp: { $lte : 222 } } 
] })

您应该考虑在要查询范围的字段上添加索引。

答案 1 :(得分:1)

您可以使用众多查询运算符(reference)之一为单个字段指定多个条件,如下所示。在此示例中,我已指定num字段必须大于或等于($gtelow值且小于或等于($ltehigh值。

low = 100
high = 1000

for doc in exampleCollection.find({ "num": { "$gte": low, "$lte":  high }})
    print doc

exampleCollection中的文档如下所示:

{ 
    "_id" : ObjectId("52a248af1d02442354276cfe"), 
    "num" : 500
} 

如果您没有为num字段创建索引,则需要进行完整的集合扫描以查找匹配的文档(因此,您可以使用create_index({{3} }))。

exampleCollection.create_index("num")