R-mongodb-访问mongodb并调取数据_II
之前写过如何用R访问mongodb的数据库,现在来写下如何筛选条件(限制条件)来进行数据的调用。实际语句调用与mongo查询方式类似。
如何连接mongodb的数据库 具体参照I
test<-mongolite::mongo(collection = "collection", url = "mongodb://username:password@host:27017/database",verbose = FALSE, options = ssl_options())
1、##如果只想要部分列数据,(部分对应字段数据)可以使用这个语句
data_mongo=test$find(fields = '{"columnname1":true,"columnname2":true,"columnname2":true}')
columnname1代表你所想要的字段名
2、##如果想筛选某字段指定值对应的数据可以如下做
data_mongo2=test$find('{"name":"lisi","sex":"male"}')
3、##如果想限定日期,前提是mongo里的日期是日期格式而不是字符串格式,可以按照以下方式操作
maxtime<-as.POSIXct(paste0(Sys.Date()," 00:00:00")) ##使用今天的00点,转化为posixct格式(时间可以进行修改),也可以使用Sys.time()当前时间
maxtimes<- as.integer(maxtime) * 1000 ##转化成日期的数值类型
data_mongo <- test$find(paste0('{"date1":{"$gte": { "$date" : { "$numberLong" : "', d, '" } } } }'))
范例:如果想卡时间,并获取想要的字段可以如下
starttime<-paste0(Sys.Date()-11,'T00:00:00Z')##大于的时间
endtime<-paste0(Sys.Date()-03,'T00:00:00Z')##小于的时间
data_mongo<-test$find(paste0('{"beginTime":{"$gte": { "$date" : "', starttime, '" } },"beginTime":{"$lte": { "$date" : "', endtime, '" } } }'),
fields='{"id":true,"name":true,"sex":true,"beginTime":true,"age":true,"endtime":true}' )
4.如果是想卡其他字符串的条件,可以借助JSON串
library(jsonlite)
id <- c('A类','B类','C类')
id_list_JSON <- toJSON(id)
id 指的是mongo里id字段
data_mongo<- test$find(paste0('{"id": {"$in": ', id_list_JSON, '}}'),
fields='{"id":true,"name":true,"sex":true,"beginTime":true,"age":true,"endtime":true}' )

浙公网安备 33010602011771号