我正在尝试对mongo数据库中的推文集合执行范围查询。由于某种原因,以下查询将起作用:
db.posts.find({'created_at': {$gte:"Fri Nov 25 00:00:00 +0000 2011", $lt:"Fri Nov 25 23:59:59 +0000 2011"}})
但以下情况不会:
db.posts.find({'created_at': {$gte:"Thu Nov 24 00:00:00 +0000 2011", $lt:"Fri Nov 25 23:59:59 +0000 2011"}})
我将推文作为JSON对象直接输入到数据库中,所以这应该不是问题,对吗?
答案 0 :(得分:5)
您需要确保使用的是真正的日期值,而不是字符串。例如:
var from = ISODate("2011-11-24")
var to = ISODate("2011-11-25T23:59:59")
db.posts.find({ created_at : { $gte : from, $lt : to } })
除了确保您的查询使用实际日期值之外,还要确保您的存储数据也包含实际日期值。
答案 1 :(得分:1)
您的查询的问题是您正在将字符串与数据对象进行比较,而该数据对象无效。 如果你使用shell,你可以这样写:
db.testing.find({
'date': {
$lt : new Date(2013,10,1),
$gte : new Date(2000,10,1)
}
})
最终会将其转化为此
db.testing.find({
"date" : {
"$lt" : ISODate("2013-11-01T00:00:00Z"),
"$gte" : ISODate("2000-11-01T00:00:00Z")
}
})