我正在使用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})我是否使用了错误的约定?
发布于 2011-12-14 08:03:52
您必须对$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 )https://stackoverflow.com/questions/8497602
复制相似问题