0

我使用javascriptgetTime() 函数将出生日期存储在 mongodb 中。现在我想查询我的数据库中所有 20 到 30 岁的人。我怎样才能在服务器上做到这一点?

{ birth_date : { $gt : 20years, $lt : 30years } }

在分贝date看起来像 -716763600000

4

2 回答 2

2

与其使用 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}
});
于 2013-09-19T15:29:31.510 回答
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

于 2013-09-19T15:09:26.247 回答