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}' )

 

 

 

posted @ 2018-01-03 18:04  zhenghuali  阅读(886)  评论(0)    收藏  举报