mongoose不能使用lt或者gt比较字符串作为检索条件
如题,我的User Collection结构是这样的:
{
"_id" : ObjectId("572c83b70cf2bae1fb443b1d"),
name:'kdyzm',
"DataAdded" : "2016-05-06T19:44:54.9379458+08:00"
}
由于种种原因DataAdded类型不是Date类型,而是String类型,而且现在没有办法修改DataAdded类型为Date类型了。 我直接使用
{
DataAdded:{
$gt:'2016-05-06T19:44:54.9379458+08:00',
$lt:'2016-05-06T19:46:01.690509+08:00'
}
}
在MongoVUE中可以查找到多条数据;但是我使用mongoose框架使用如下代码就查不到数据,不知道是不是字符串在mongoose中不被支持使用gt或者lt的原因~
dataModel.find({
DataAdded:{
$gt:'2016-05-06T19:44:54.9379458+08:00',
$lt:'2016-05-06T19:46:01.690509+08:00'
}
})
.exec(function(err,result){
console.log("err info:"+JSON.stringify(err)+",result info :"+JSON.stringify(result) + " " + JSON.stringify(result[0]) + " " + result.length);
});
也就是说我使用lt和gt命令在MongooVUE中比较字符串是可以生效的,但是在mongoose中使用代码就不会生效;如果使用其他数据类型比如Number或者Date类型的话在代码中使用$gt或者$lt都生效。
我该怎么解决这个问题?走过路过的大神请多多指教。
1 回复
虽然比较low,使用$where可以解决该问题。