使用“$ gte”和“$ lte”时Pymongo返回错误

时间:2012-12-17 03:31:57

标签: python mongodb datetime pymongo epoch

我尝试从mongo中选择(使用pymongo),查询时间戳。 我的数据库中的一个样本(为了简洁起见):

{
    "_id": "",
    "tweet": {
        "iso_language_code": "en",
        "to_user_name": null,
        "timestamp": 1355325948,
        "created_at": "Wed, 12 Dec 2012 15:25:48 +0000"
    }
}

查询,在代码中和python控制台中:

<console>
db.tweets.find({
    "tweet.timestamp":{'$gte':1355391000},
    "tweet.timestamp":{'$lte':1355414400}
})

<code>
cursor = db.tweets.find({"tweet.timestamp":{'$gte':startEpoch},
                         "tweet.timestamp":{'$lte':endEpoch}})

分别是星期四,2012年12月13日09:30:00 GMT 星期四,2012年12月13日16:00:00 GMT

应该说,给我发送所有推文 gte this int lte this other int 。但是,它会返回所有内容 - 它似乎根本不会限制这些值。

例如,返回此条目,时间戳为: 1355325948 Wed,12 Dec 2012 15:25:48 GMT

另外,我理解使用params列表查找(...)是一个隐含的AND。

TIA SO!

1 个答案:

答案 0 :(得分:5)

您的查询对象中不能有两个具有相同名称的键。你必须将它们组合成一个像这样的值:

cursor = db.tweets.find({"tweet.timestamp":{'$gte':startEpoch, '$lte':endEpoch}})