gpt4 book ai didi

javascript - mongodb中如何获取某个日期范围内的记录?

转载 作者:行者123 更新时间:2023-11-28 04:30:46 28 4
gpt4 key购买 nike

在我的 mongodb 集合中,我有一条记录:

//mongodb field: "birth_date": "1983-05-06T16:26:32.613Z" 

这里是我的查找查询,以获取范围内的记录:

var birthYear = 1983;
var birthDateStart = new Date('1.1.' + birthYear); //Sat Jan 01 1983 00:00:00 GMT+0100 (Mitteleuropäische Zeit)
var birthDateEnd = new Date('12.30.' + birthYear); //Fri Dec 30 1983 00:00:00 GMT+0100 (Mitteleuropäische Zeit)
var cursor = db.collection('users').find({
birth_date: {$gte: birthDateStart, $lt: birthDateEnd}
})

我认为问题在于日期格式,如何获得与数据库中相同的 Date() 格式?

我用了variety获取数据库架构:

+--------------------------------------------------+
| key | types | occurrences | percents |
| ------------ | -------- | ----------- | -------- |
| _id | ObjectId | 1 | 100.0 |
| bio | String | 1 | 100.0 |
| birth_date | String | 1 | 100.0 |
+--------------------------------------------------+

我将“mongodb”包用于express.js - 并且无法使用ISODate()。

ReferenceError: ISODate is not defined

最佳答案

感谢您的所有提示。问题是,birth_date 字段被保存为字符串。

我想在这个答案中向您展示如何将集合中所有记录中的字段格式从字符串更改为日期,然后在仅保存生日时如何按年龄(以年为单位)进行搜索。也许它对其他人有帮助。

将字段birth_date的字符串格式更改为日期:

mongo.connect(url, function (err, db) {
console.log(err);
var resultArray = [];
var cursor = db.collection('users').find({});
cursor.forEach(function (doc, err) {
console.log(doc);
db.collection('users').update({_id: doc._id}, {$set: {birth_date: new Date(doc.birth_date)}});
}, function () {
db.close();
res.send("Done!");
})
})

查找18岁的用户:

var search_age = 18;
var birthYear = new Date(Date.now()).getFullYear() - search_age;
var birthDateStart = new Date(birthYear, 0, 1);
var birthDateEnd = new Date(birthYear, 11, 31, 23, 59, 59, 999);
var resultArray = [];

mongo.connect(url, function (err, db) {
console.log(err);
var resultArray = [];
var cursor = db.collection('users').find({
birth_date: {$gte: birthDateStart, $lt: birthDateEnd},
})
;
cursor.forEach(function (doc, err) {
resultArray.push(doc);
}, function () {
db.close();
res.send(resultArray);
})
})

关于javascript - mongodb中如何获取某个日期范围内的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44628369/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com