1

我正在使用 Groovy 中的 GMongo 库从 MongoDB 中读取项目。CacheItem 类是一个保存缓存项的简单对象,每个项都有一个过期时间,该过期时间是在添加到 mongo 时设置的。当我从 mongo 读取项目时,我只想根据 expireMillis 字段检索尚未过期的项目。

class CacheItem {
  def _id
  def cacheKey
  long expirationMillis
  def value
}

这适用于使用 cacheKey 检索项目

item = mongoDb.cache.findOne( cacheKey: "600")

但是,当我尝试使用大于/小于约定的标准时,我似乎无法检索任何文档..

long nowMillis = (new Date()).getTime()
item = mongoDb.cache.findOne( cacheKey: "600", expirationMillis: { $gt: nowMillis})

我是否使用了错误的约定?

4

1 回答 1

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 )
于 2011-12-14T00:03:52.347 回答