我正在使用Groovy中的GMongo库来读取MongoDB中的项目。 CacheItem类是一个容纳缓存项的简单对象,每个项都有一个到期时间,该时间是在添加到mongo时设置的。当我从mongo读取项目时,我只想根据expirationMillis字段检索尚未过期的项目。
class CacheItem {
def _id
def cacheKey
long expirationMillis
def value
}
这适用于使用cacheKey检索项目
item = mongoDb.cache.findOne( cacheKey: "600")
但是当我尝试对expirationMillis使用大于/小于约定的条件时,我似乎无法检索任何文档..
long nowMillis = (new Date()).getTime()
item = mongoDb.cache.findOne( cacheKey: "600", expirationMillis: { $gt: nowMillis})
我使用了错误的惯例吗?
答案 0 :(得分:3)
你必须逃避$ gt,看起来像这样:
long nowMillis = (new Date()).getTime()
item = mongoDb.cache.findOne( [ cacheKey: "600", expirationMillis: [ "\\\$gt" : nowMillis]] as BasicDBObject)
或
long nowMillis = (new Date()).getTime()
item = mongoDb.cache.findOne( [ cacheKey: "600", expirationMillis: [ '$gt' : nowMillis]] as BasicDBObject )