【发布时间】:2020-10-02 10:40:25
【问题描述】:
我想在我的数据库中上传用户日期,不管是日期格式还是字符串格式。之后我想查询用户并在所有日期执行 $lte 和 $gte 以找到具有特定年龄范围的用户(例如:25-30),但我目前遇到的问题是:
如果我对 29 岁的用户进行查询,例如我有
User1: birthday: 21st May 1991
User2: birthday: 21st September 1991
如果今天是 2020 年 6 月 12 日,它给了我两个用户(User1 和 User2),但它应该只给我 User1,因为他有 29 个,而 User2 在几个月后将是 29 个。谁能帮我找到解决方案或提出解决方案?谢谢!
我当前的代码:
ageRangeFirst = 29
ageRangeSecond = 31
current_year = int(datetime.now().year)
newFirstAge = current_year - ageRangeFirst
newSecondAge = current_year - ageRangeSecond
filter['dateOfBirth'] = {"$lte": '{}1231'.format(newFirstAge), "$gte": '{}0101'.format(newSecondAge)}
我在数据库中将日期保存为字符串格式:
"dateOfBirth" : "19911201" //yyyyDDmm as String
我知道我当前的方法应该给出我得到的结果,但我需要更好的日期和年龄查询和管理。
谢谢
【问题讨论】:
-
两件事:第一,你实际上并没有比较日期,你只是在比较字符串,第二你只是减去
year来得到范围,这是错误的。 -
@ngShravil.py 我已经解决了这个问题。谢谢!
标签: python mongodb mongoose mongodb-query pymongo