在 Pymongo 查询路径中使用日期时间的最佳做法


如果我

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

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

此代码将起作用,但是(如预期的那样(有一个字符串而不是日期时间对象:

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

不可能将日期对象存储为 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

最新更新