R:按时间戳查询 MongoDB(使用 mongolite)
R : Querying MongoDB by timestamp (using mongolite)
我有一个相当大的 Mongo 数据库,该数据库的索引基于 timestamp
。数据库中的每个时间戳的结构如下:
"timestamp" : ISODate("2016-05-22T17:05:22.000Z")
我是 R 用户,我正在尝试根据每个条目的时间戳查询数据库。具体来说,我想检索时间戳大于我指定的某个日期的所有条目。我目前正在使用 mongolite
包通过 R 查询 MongoDB 但没有成功。
这是我用来检索起诉 mongolite
的数据的查询示例:
library(mongolite)
mongo <- mongolite::mongo(url = "mongodb://localhost:27017",
collection = "testCol",
db = "testDB")
fmt <- '%Y-%m-%dT%H:%M:%S.000Z'
rawData <- mongo$find(query = paste0('{
"timestamp" : {
"$gte" : "ISODate(', format(Sys.time() - (60 * 60 * 24), fmt),')",
"$lt" : "ISODate(', format(Sys.time(), fmt),')"
}
}'))
请注意,我正在格式化时间和日期以与上面的 MongoDB 格式保持一致,并且我正在尝试提取过去 24 小时内的所有条目。我也在我的实际查询中添加了一些字段,但这里没有包含它们。
这个查询有明显的错误吗?
您需要将日期转换为 numberLong
,并对其进行查询
d <- as.integer(Sys.time()) * 1000
rawData <- mong$find(paste0('{"timestamp":{"$gte": { "$date" : { "$numberLong" : "', d, '" } } } }'))
我有一个
并在 mongolite github 网站上查看 this thread
我有一个相当大的 Mongo 数据库,该数据库的索引基于 timestamp
。数据库中的每个时间戳的结构如下:
"timestamp" : ISODate("2016-05-22T17:05:22.000Z")
我是 R 用户,我正在尝试根据每个条目的时间戳查询数据库。具体来说,我想检索时间戳大于我指定的某个日期的所有条目。我目前正在使用 mongolite
包通过 R 查询 MongoDB 但没有成功。
这是我用来检索起诉 mongolite
的数据的查询示例:
library(mongolite)
mongo <- mongolite::mongo(url = "mongodb://localhost:27017",
collection = "testCol",
db = "testDB")
fmt <- '%Y-%m-%dT%H:%M:%S.000Z'
rawData <- mongo$find(query = paste0('{
"timestamp" : {
"$gte" : "ISODate(', format(Sys.time() - (60 * 60 * 24), fmt),')",
"$lt" : "ISODate(', format(Sys.time(), fmt),')"
}
}'))
请注意,我正在格式化时间和日期以与上面的 MongoDB 格式保持一致,并且我正在尝试提取过去 24 小时内的所有条目。我也在我的实际查询中添加了一些字段,但这里没有包含它们。
这个查询有明显的错误吗?
您需要将日期转换为 numberLong
,并对其进行查询
d <- as.integer(Sys.time()) * 1000
rawData <- mong$find(paste0('{"timestamp":{"$gte": { "$date" : { "$numberLong" : "', d, '" } } } }'))
我有一个
并在 mongolite github 网站上查看 this thread