mongoose不能使用lt或者gt比较字符串作为检索条件
发布于 9 年前 作者 kdyzm 4163 次浏览 最后一次编辑是 8 年前 来自 问答

如题,我的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可以解决该问题。

回到顶部