我使用javascript
getTime() 函数将出生日期存储在 mongodb 中。现在我想查询我的数据库中所有 20 到 30 岁的人。我怎样才能在服务器上做到这一点?
{ birth_date : { $gt : 20years, $lt : 30years } }
在分贝date
看起来像 -716763600000
我使用javascript
getTime() 函数将出生日期存储在 mongodb 中。现在我想查询我的数据库中所有 20 到 30 岁的人。我怎样才能在服务器上做到这一点?
{ birth_date : { $gt : 20years, $lt : 30years } }
在分贝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