【问题标题】:Calculate "age" MongoDB document DateTimeField Flask计算“年龄”MongoDB 文档 DateTimeField Flask
【发布时间】:2014-10-29 21:16:55
【问题描述】:

我在我的应用程序中使用带有 MongoDB 2.6 标准的 python 3.4 和 flask 0.10。带有 mongo 文档。我想计算 Persons 的“年龄”或“年”,只是它的生日。我有这个代码:

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

请在 DateTime 操作方面提供帮助

谢谢

【问题讨论】:

  • 你在用mongo引擎吗?
  • 是的,我正在使用 mongoengine

标签: python mongodb flask


【解决方案1】:

您正在寻找的功能可能在 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

但您将无法按年龄查询,因为它没有保存在您的数据库中。

【讨论】:

  • 谢谢,真的帮助我:)。现在我必须想办法将它存储在我的数据库中。
  • @YecidYahuita 为什么要存储?我相信如果你想得到一定年龄的人,你可以在生日时查询。当然,您必须使用 $gte / $lte 专门为该查询设计一个查询,但这是可能的。
  • 能否请您提供一个包含 $gte / $lte 文档的链接。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2020-12-28
  • 2016-03-20
  • 2011-04-16
  • 1970-01-01
  • 2021-08-15
相关资源
最近更新 更多