0

タイムスタンプに基づいて mongodb をクエリしようとしていますが、常に空のリストが返されるようです。何か間違ったフォーマットをしているに違いありません。以下のmongoドキュメントの場合:

{
"_id" : ObjectId("21def16043fe370208f857c2"),
"username" : "user",
"domain" : "domain.com",
"hash" : "65fdacac5ff9e",
"created" : ISODate("2012-11-20T16:08:28Z"),
"ip" : "160.85.11.222",
"actions" :
...
}

作成したフィールドでドキュメントをフィルタリングしたい。ただし、使用しようとすると:

mongo <- mongo.create()
buf <- mongo.bson.buffer.create()
mongo.bson.buffer.start.object(buf, "created")
mongo.bson.buffer.append(buf, "$gt", "2013-01-01")
mongo.bson.buffer.finish.object(buf)
mongo.bson.buffer.append(buf, "$lt", "2013-08-01")
mongo.bson.buffer.finish.object(buf)
query <- mongo.bson.from.buffer(buf)
cursor <- mongo.find(mongo, "domain.actions", query)  

空のリストを取得します。$gt または $lt を使用しただけでは機能しません。日付の形式が間違っていませんか? それともクエリが間違っていますか?

4

3 に答える 3

1

この問題に関して rmongodb が更新されたようです。rmongodb Web サイトから:

To build bson with ISODate data you should pass it as POSIXct object:

date_string <- "2014-10-11 12:01:06"
# Pay attention to timezone argument
query <- mongo.bson.from.list(list(date = as.POSIXct(date_string, tz='GMT')))
# Note, that internally MongoDB strores dates in unixtime format:
query

最初に引用されたMSKタイムゾーンをに変更GMTして、データで機能するようにしました。

于 2014-12-16T22:20:39.177 に答える