我需要一些帮助,在 mongodb 和 nodejs 中按日期查找记录。
我在抓取脚本中将日期添加到 json 对象中,如下所示:
jsonObj.last_updated = new Date();
这个对象被插入到 mongodb 中。我可以看到如下:
"last_updated" : "2014-01-22T14:56:59.301Z"
然后在我的 nodejs 脚本中我执行 findOne():
var jObj = JSON.parse(line.toString());
collection.findOne(jObj,function(err, doc) {
if (doc){
console.log(doc._id);
} else {
console.log('not found');
}
});
找不到对象。如果我从找到的对象中删除 last_updated 字段,那么它肯定是问题所在。
如果我按如下方式隔离字段:
collection.findOne({last_updated: '2014-01-22T14:56:59.301Z'},function(err, doc) {
if (doc){
console.log(doc._id);
} else {
console.log('not found');
}
});
什么也没有回来。请问我做错了什么?
最佳答案
您需要传递一个日期对象而不是日期字符串。
collection.findOne({last_updated: new Date('2014-01-22T14:56:59.301Z')},function(err, doc) {
MongoDB 驱动程序会将其转换为 ISODate
:
{
"_id" : ObjectId("52dfe0c469631792dba51770"),
"last_updated" : ISODate('2014-01-22T14:56:59.301Z')
}
检查这些问题:
https://stackoverflow.com/questions/21286599/