1

MongoDB からアイテムを読み取るために、Groovy で GMongo ライブラリを使用しています。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})

間違った規則を使用していますか?

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 に答える