我使用javascript
getTime()函数在mongodb中存储出生日期。现在我想查询我的数据库中所有20到30年的人。我该如何在服务器上执行此操作?
{ birth_date : { $gt : 20years, $lt : 30years } }
数据库中的 date
看起来像 - 716763600000
答案 0 :(得分:1)
自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
答案 1 :(得分:1)
不使用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}
});