在Pymongo查询路径中使用datetime的最佳实践?

时间:2017-04-14 14:25:20

标签: python mongodb datetime pymongo

如果我需要一些复杂的路径,如何使用datetime对象?例如,我想增加位于jumps/datetime.date()/country code的计数器:

database['data'].update_one(
                {'some_data' : 'asdasd'},
                {'$inc' : {'jumps.{}.{}'.format(datetime.now().date(), "US") : 1}},
            )

此代码可以使用,但是(正如预期的那样)有一个字符串而不是datetime对象:

"jumps" : {
    "2017-04-14" : {
        "US" : 4
    }
}

1 个答案:

答案 0 :(得分:2)

将日期对象存储为mongodb文档中的密钥是不可能的。 此外,您不应该使用值作为键,因为您无法在查询或索引中使用键。如果你改变文档的结构并简化它会更好。

类似的东西:

"jumps" : {[
    {'date': ISODate('2017-04-14'), "US" : 4},
    {'date': ISODate('2017-04-14'), "RU" : 9}
]}

或者您可以创建包含文档的新集合jumps

{'date': ISODate('2017-04-14'), "US" : 4}
{'date': ISODate('2017-04-14'), "RU" : 9}

或其他结构

请看这篇文章https://derickrethans.nl/mongodb-arbitrary-key-names.html