我有一组JSON对象都有时间戳。这是我的模特:
'use strict';
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var PriceSchema = new Schema({
high: {
type: Number
},
last: {
type: Number
},
timestamp: {
type: Number
},
bid: {
type: Number
},
vwap: {
type: Number
},
volume: {
type: Number
},
low: {
type: Number
},
ask: {
type: Number
},
open: {
type: Number
}
});
module.exports = mongoose.model('Prices', PriceSchema);
现在我想编写一个方法,在数据库中搜索与当天相对应的所有条目。所以我检查当前时间,然后查询比昨天更旧的所有内容:
'use strict';
var mongoose = require('mongoose'),
moment = require('moment'),
Price = mongoose.model('Prices');
exports.list_current_day = function(req, res) {
var now = moment().valueOf()
var oneDayAgo = now - 86400000
Price.findOne({ 'timestamp' > oneDayAgo }, function (err, price) {
if (err) return handleError(err);
res.json(price)
})
}
但我的情况失败了。我得到Unexpected token >
。如何指定搜索查询的条件以使用timestamp > currentDay
返回所有内容?
答案 0 :(得分:0)
您的查询已关闭。 findOne
将对象作为描述目标文档属性的第一个参数。您收到错误的原因是对象文字中的<
标记无效且语法无效。相反,请尝试以下方法:
Price.findOne({
timestamp: {
$gt: oneDayAgo
}
}, function (err, price) {
if (err) return handleError(err);
res.json(price)
});
这将使用查询中的$gt
运算符来检查某个属性是否符合要求。根据MongoDB文档:
$gt
语法:
{field: {$gt: value} }
$gt
选择field
的值大于(>
)指定value
的文档。
因此,它将选择timestamp
字段大于oneDayAgo
的文档。