我正在使用 getTime() 函数将出生日期存储在 mongodb 中javascript
。现在,我想查询我的数据库,查找所有年龄在 20 到 30 岁之间的人。如何在服务器上执行此操作?
{ birth_date : { $gt : 20years, $lt : 30years } }
在 DB 中,date
看起来像 - 716763600000
与其使用 getTime(),不如直接使用 Date 对象。这样,您的数据将通过网络发送并存储标记为BSON日期时间类型而不是整数类型。您可以像这样插入和检索当前日期:
> db.foo.insert({time: new Date});
> db.foo.findOne();
{
"_id" : ObjectId("523b182d42214dac3729419f"),
"time" : ISODate("2013-09-19T15:28:45.175Z")
}
以下是查询 20 到 30 岁之间的每个人的方法:
var t1 = new Date();
var t2 = new Date();
t1.setYear(t1.getYear() - 30);
t2.setYear(t2.getYear() - 20);
db.people.find({
birth_date : {$gt: t1, $lt: t2}
});
自 1970/01/01 以来,您已将出生日期存储为毫秒。然后,您必须查询与那时不同的查询:
db.people.find({
birth_date: {
$gt: new Date().getTime() - new Date(2000, 0, 1).getTime(),
$lt: new Date().getTime() - new Date(1990, 0, 1).getTime()
}
})
在 $gt
命令中,您可以查询所有生日大于 now before 30 years
在 $lt
命令中,您可以查询所有,生日低于 now before 20 years