计算 MongoDB 文档 DateTimeField 的“年龄” Flask
我正在使用 Python 3.4 和 Flask 0.10,配合 MongoDB 2.6 来开发我的应用程序。我的数据是 Mongo 文档。我想根据生日来计算“年龄”或“年数”。我有以下这段代码:
import datetime
from Personal import db
class Person(db.Document):
ID = db.StringField(required=True, primary_key=True, unique=True, max_length=6)
name = db.StringField(required=True)
birthday = db.DateTimeField(required=True)
age = ########
我试过用
age = int(datetime.datetime.now.year) - int(birthday).year
但我知道这样是不对的。我已经看过 Mongo 文档的指南,但没什么帮助:
http://docs.mongoengine.org/guide/defining-documents.html
请帮我解决一下关于日期时间的操作问题
谢谢
1 个回答
0
你想要的功能可能在Python里,而不是在MongoDB中。通过使用一个叫做property
的东西,你可以很简单地实现这个:
class Person(db.Document):
ID = db.StringField(required=True, primary_key=True, unique=True, max_length=6)
name = db.StringField(required=True)
birthday = db.DateTimeField(required=True)
@property
def age(self):
return ((datetime.datetime.now() - self.birthday).days) / 365
使用这个类,你可以这样做:
>>> p = Person(name='rafael', birthday=datetime.datetime(year=1990, day=1, month=1))
>>> p.age
24
不过,你不能通过年龄来查询,因为数据库里没有保存这个信息。