这是我的天气模型:
// Declare schema
var weatherSchema = Schema({
data: {
type: Object
},
date: {
type: String,
required: true
},
created_at: {
type: Date,
default: Date.now,
index: 1
}
});
在date
字段中,我存储2017-7-1,2017-7-2,2017-7-3等日期
现在我在这张天气表中有很多文档,例如2017-6-20到2017-7-3。
所以我想仅从2017-7-1
到2017-7-2
检索文档:
Weather
.find({})
.where('date').gt('2017-7-1').lt('2017-7-2')
.exec(function (err, docs) {
console.log(docs);
if (err) {
res.set('Content-Type', 'application/json');
return res.sendStatus(-1);
}
if (!docs) {
res.set('Content-Type', 'application/json');
return res.status(200).send('Not weather data found.');
}
// return docs as json.
return res.status(200).json(docs);
});
但我得到的是[]
。我做错了什么?
有什么想法吗?
修改
official format above 不有效,但它适用于以下格式:
var options = {
"date": {
"$gte": start,
"$lt": end
}
}
Weather
.find(options, function (err, docs) {
console.log(docs);
if (err) {
res.set('Content-Type', 'application/json');
return res.status(200).send('Error occurs: ' + err);
}
if (!docs) {
res.set('Content-Type', 'application/json');
return res.status(200).send('Not weather data found.');
}
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET,POST,DELETE');
// return docs as json.
return res.status(200).json(docs);
}).select("-created_at -_id -__v");
为什么?
答案 0 :(得分:1)
要比较date
字段应为Date
类型的日期。然后你可以搜索:
.where('date').gt(new Date('2017-7-1')).lt(new Date('2017-7-2'))
或者如果您想将日期用作字符串,可以像这样搜索:
.where('date').in(['2017-7-1', '2017-7-2'])
此查询将查找具有完全日期字符串('2017-7-1'或'2017-7-2')
的条目