标签: mongolite

蒙古石最佳实践

我正在使用OpenCPU和R开发一个应用程序,我对两者都是全新的.我使用mongolite包连接到MongoDB.每次都有多次调用DB并连接,需要很长时间.加上数据处理,绘图等需要花费大量时间来加载具有生成的图的页面.在许多情况下,我必须绘制从多个集合中获取数据.

我注意到,我能够节省3-4秒(每个连接),如果我不连接每一次分贝,而使用现有连接.

如果有人能用最好的方法来指导我是否已经建立了与DB的连接,那将会很棒.

让我简要介绍一下到目前为止我做了什么!

这是我的connect_to_db.R文件

library(mongolite)

dbConnection <- NULL

connect_mongodb = function() {
db={
      if(is.null(dbConnection)){  # connect to DB only if connection is NULL, else return global connection object
        m <- mongo(collection = myCollection, db = myDb, url = myUrl)
        assign("dbConnection", m, envir = .GlobalEnv)
      }
      return(dbConnection)
    }
}
Run Code Online (Sandbox Code Playgroud)

它用于获取文件并从R控制台运行它.但是,当我在opencpu服务器中使用它时,我从另一个用于绘图的R方法调用connect_mongodb方法.我从javascript文件中调用绘图方法如下.

var req = $("#plot").rplot(myPlottingMethod, options).fail(function(){
    alert("Error loading results");
})
Run Code Online (Sandbox Code Playgroud)

这样,我的变量"dbConnection"对于该方法是未知的.

我尝试了其他一些使用<<的方式 - 我读的并不是一个很好的方法.我也尝试使用exists()代替is_null.

我尝试了另一种选择,使用ocpu.rpc调用从我的javascript文件调用我的connect_mongodb方法,并将其作为参数传递给rplot调用中的R方法.

var req = ocpu.rpc("connect_mongodb", {})
Run Code Online (Sandbox Code Playgroud)

由于连接到mongolite不会返回一个JSON对象,这个尝试也失败了以下错误 无法获取http:// localhost:xxxx/ocpu/tmp/x07c82b16bb的 JSON响应/ 遗憾的是,jsonlite的jSON和rjson没有帮助转换db对象为JSON

r opencpu mongolite

7
推荐指数
0
解决办法
922
查看次数

R:使用mongolite更新mongodb中的条目

我有一个mongo数据库,其中包含我要传递给某些R脚本进行分析的信息.我目前正在使用该mongolite包将信息传递mongoR.

我在每个mongo条目中都有一个字段checkedByR,它是一个二进制文件,指示条目是否已经由R脚本分析.具体来说,我正在通过各自的mongo ID收集mongo条目,在条目上运行脚本,为checkedByR字段分配a 1,然后继续.

为了完整起见,我使用以下请求查询数据库:

library(mongolite)

mongoID <- "1234abcd1234abcd1234"

m <- mongolite::mongo(url = "mongodb://localhost:27017",
                      collection = "collection",
                      db = "database")

rawData <- m$find(query = paste0('{"_id": { "$oid" : "',mongoID,'" }}'), 
                  fields = '{"_id" : 1, 
                             "checkedByR" : 1, 
                             "somethingToCheck" : 1}')

checkedByR <- 1
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用新checkedByR字段成功更新mongo条目.

我意识到包中update存在一个函数mongolite(请考虑:https://cran.r-project.org/web/packages/mongolite/mongolite.pdf),但我无法收集相关示例来帮助我完成更新处理.

任何帮助将不胜感激.

r mongodb mongolite

6
推荐指数
1
解决办法
3358
查看次数

通过 Shinyapps.io 连接到 MongoDB Atlas

我试图将我闪亮的应用程序连接到 mongodb 服务器。我在 Shinyapps.io 上部署了应用程序,但一次又一次地出错:

2019-10-22T18:14:14.694520+00:00 shinyapps[1117463]: Listening on http://127.0.0.1:36739
2019-10-22T18:14:36.665309+00:00 shinyapps[1117463]: Warning: Error in : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-00-rysq4.gcp.mongodb.net:27017']
2019-10-22T18:14:36.670320+00:00 shinyapps[1117463]:   61: mongo_collection_command_simple
2019-10-22T18:14:36.670321+00:00 shinyapps[1117463]:   60: mongo
2019-10-22T18:14:36.670322+00:00 shinyapps[1117463]:   59: server [/srv/connect/apps/Seaport/app.R#223]
2019-10-22T18:14:36.670413+00:00 shinyapps[1117463]: Error : No suitable servers found (`serverSelectionTryOnce` set): [socket timeout calling ismaster on 'seaport-shard-00-01-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on 'seaport-shard-00-02-rysq4.gcp.mongodb.net:27017'] [socket timeout calling ismaster on …
Run Code Online (Sandbox Code Playgroud)

r mongodb shiny mongolite shinyapps

6
推荐指数
1
解决办法
237
查看次数

使用Rs mongolite正确(插入?更新?)将数据添加到现有集合中

我有以下用R编写的函数(我认为)在更新我的mongo数据库集合方面做得很差。

library(mongolite) 

con <- mongolite::mongo(collection = "mongo_collection_1", db = 'mydb', url = 'myurl')
myRdataframe1 <- con$find(query = '{}', fields = '{}')
rm(con)

con <- mongolite::mongo(collection = "mongo_collection_2", db = 'mydb', url = 'myurl')
myRdataframe2 <- con$find(query = '{}', fields = '{}')
rm(con)

... code to update my dataframes (rbind additional rows onto each of them) ...

# write dataframes to database
write.dfs.to.mongodb.collections <- function() {

  collections <- c("mongo_collection_1", "mongo_collection_2") 
  my.dataframes <- c("myRdataframe1", "myRdataframe2")

  # loop dataframes, write colllections
  for(i in …
Run Code Online (Sandbox Code Playgroud)

r mongodb mongolite

5
推荐指数
1
解决办法
441
查看次数

尝试连接 R 上的 mongodb 时找不到合适的服务器

在尝试通过 mongolite 包连接到 mongodb atlas 后,我随机收到此错误。

library(mongolite)

url = "myurl"
data = mongo(collection = "mycollection", db = "mydb", url = url)
Run Code Online (Sandbox Code Playgroud)
Error: No suitable servers found (`serverSelectionTryOnce` set): [TLS handshake failed: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed calling ismaster on 'cluster0-shard-00-00.skqv5.mongodb.net:27017'] [TLS handshake failed: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed calling ismaster on 'cluster0-shard-00-01.skqv5.mongodb.net:27017'] [TLS handshake failed: error:1416F086:SSL routines:tls_process_server_certificate:certificate
Run Code Online (Sandbox Code Playgroud)

在过去的几周里,我每天都能保持联系。当我在其他电脑上运行它时,它可以工作。我也尝试过在 RStudio 云上运行它并且它有效。当地似乎正在发生一些我不明白的事情。我看过其他帖子也有这个错误,但我不明白如何在 R 中执行此操作。

r mongodb mongolite

5
推荐指数
0
解决办法
488
查看次数

在Mongolite R库中获取ObjectID

我可以从mongoDB实例成功检索数据,但需要重新使用objectID进行依赖查询。

以下代码似乎可以获取我的整个对象,但不能获取ID。我想念什么?

# Perform a query and retrieve data
mongoOBj <- m$find('{"em": "test@test.com"}')
Run Code Online (Sandbox Code Playgroud)

r mongodb mongolite

4
推荐指数
2
解决办法
1342
查看次数

R中使用mongolite的正则表达式

试图与令人敬畏的mongolite图书馆进行正则表达式匹配,我仍然不确定我做错了什么,真的很疯狂,我在这里缺少什么.

library(mongolite)
m <- mongo(url = "mongodb://192.168.1.5:27017", db = "products", collection =    "sku")

m$count()
#gives 54524

a1 <- m$find('{"item"  : { "$regex" : "/.*A*./i" }}')
returns Imported 0 records. Simplifying into dataframe...

#but when you do
a1 <- m$find('{"item"  : "ABC"}')
#returns 8 records
a1 <- m$find('{"item"  : "AAC"}')
#returns 5 records
a1 <- m$find('{"item"  : "AAAC"}')
#returns 18 records
Run Code Online (Sandbox Code Playgroud)

等等.所以我不确定我在mongodb中调用正则表达式运算符的方式有什么问题.任何线索.?谢谢

r mongodb mongolite

4
推荐指数
1
解决办法
1412
查看次数

R - 如何在 mongolite 查询中传递值

我正在使用 mongolite 包从 MongoDB 连接和检索数据。 如何在 mongolite 查找查询中传递值

##connecting mongodb

library(mongolite)

mongo<-mongolite::mongo(collection = "Sample", db = "Test", url = 
                          "mongodb://User:123@Wyyuyu:13333/ty2_U",verbose = TRUE)

## getting all data from collection data from collection below query is working fine.

values <- mongo$find()

## But I want to filter specific value by passing value.

 for(i in c("process","check","queue"))
{    

   values <- mongo$find('{"field" : i}',)
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试上面的代码,我会遇到以下问题。请帮我解决

Error: Invalid JSON object: {"field" : i}
Run Code Online (Sandbox Code Playgroud)

json r mongolite

4
推荐指数
1
解决办法
2346
查看次数

mongolite - 聚合方法的正确语法

数据

在这里,我使用mongolite将虚拟数据插入到测试 mongodb 数据库中:

library(mongolite)

## create dummy data
df <- data.frame(id = c(1,2,3,4),
                 region = c("r1", "r1", "r2", "r2"))

> df
  id region
1  1     r1
2  2     r1
3  3     r2
4  4     r2

## insert into database
mong <- mongo(collection = "test", db = "test", url = "mongodb://localhost")
mong$insert(df)
Run Code Online (Sandbox Code Playgroud)

如何使用该aggregate方法查找每个区域的记录数?

Mongo Shell 查询

此查询在 mongo shell 中运行时返回正确答案

db.test.aggregate({ $group : { _id : "$region", number_records : { $sum : 1}}})
Run Code Online (Sandbox Code Playgroud)

我现在如何将其翻译成正确的语法mongolite …

r mongolite

2
推荐指数
1
解决办法
2763
查看次数

使用 mongolite R 包将 json 对象插入到 MongoDB 中

在 R 中有很多用于处理 MongoDB 的包。我开始使用 'mongolite' 包,因为我使用 'jsonlite' 和 'mongolite' 构建在 'jsonlite' 之上。但是,我有点困惑,为什么“mongolite”中的插入函数不允许插入 json 对象(帮助说它插入数据帧)?

我应该使用什么包来存储 json 对象并进行简单的查询?

json r mongodb mongolite

2
推荐指数
1
解决办法
4276
查看次数

如何关闭mongolite R包中的消息

无论如何要关闭蒙古R套装发出的Mongo消息?我已经尝试在mongo()函数中设置verbose = FALSE,但这对这些消息没有任何影响.源代码引用了一个log_level但我看不到任何在任何地方设置它的选项.

每当我使用任何用户名连接到副本集时都会发生这种情况(但此示例适用于用户'moso')

Mongo消息:SCRAM:"moso"认证Mongo消息:SCRAM:认证"moso"(步骤1)Mongo消息:SCRAM:认证"moso"(步骤2)Mongo消息:SCRAM:认证"moso"(步骤3)

这些消息在我的日志中重复了很多次,并且很难看到实际的错误.

r mongolite

2
推荐指数
1
解决办法
217
查看次数

Mongolite group by/aggregate on JSON object

我的mongodb集合上有一个这样的json文档:更新文档:

{
"_id" : ObjectId("59da4aef8c5d757027a5a614"),
"input" : "hi",
"output" : "Hi. How can I help you?",
"intent" : "[{\"intent\":\"greeting\",\"confidence\":0.8154089450836182}]",
"entities" : "[]",
"context" : "{\"conversation_id\":\"48181e58-dd51-405a-bb00-c875c01afa0a\",\"system\":{\"dialog_stack\":[{\"dialog_node\":\"root\"}],\"dialog_turn_counter\":1,\"dialog_request_counter\":1,\"_node_output_map\":{\"node_5_1505291032665\":[0]},\"branch_exited\":true,\"branch_exited_reason\":\"completed\"}}",
"user_id" : "50001",
"time_in" : ISODate("2017-10-08T15:57:32.000Z"),
"time_out" : ISODate("2017-10-08T15:57:35.000Z"),
"reaction" : "1"
Run Code Online (Sandbox Code Playgroud)

}

我需要在intent.intent字段上执行group,我正在使用Rstudio和mongolite库.我试过的是:

pp = '[{"$unwind": "$intent"},{"$group":{"_id":"$intent.intent", "count": {"$sum":1} }}]'

stats <- chat$aggregate(
      pipeline=pp,
      options = '{"allowDiskUse":true}'
    )

print(stats)
Run Code Online (Sandbox Code Playgroud)

但它不起作用,上面代码的输出是

  _id count
1  NA   727
Run Code Online (Sandbox Code Playgroud)

json group-by aggregate mongodb mongolite

2
推荐指数
1
解决办法
445
查看次数

r mongolite - 日期查询

使用mongoliteR,如何查询给定日期的数据库?

示例数据

考虑一个test包含两个条目的集合

library(mongolite)

## create dummy data
df <- data.frame(id = c(1,2),
                 dte = as.POSIXct(c("2015-01-01","2015-01-02")))

> df
  id        dte
1  1 2015-01-01
2  2 2015-01-02

## insert into database
mong <- mongo(collection = "test", db = "test", url = "mongodb://localhost")
mong$insert(df)
Run Code Online (Sandbox Code Playgroud)

Mongo shell查询

要在给定日期之后查找条目,我会使用

db.test.find({"dte" : {"$gt" : new ISODate("2015-01-01")}})
Run Code Online (Sandbox Code Playgroud)

如何在R使用中重现此查询mongolite

R尝试

到目前为止我已经尝试过

qry <- paste0('{"dte" : {"$gt" : new ISODate("2015-01-01")}}')
mong$find(qry)
Error: Invalid JSON object: {"dte" : …
Run Code Online (Sandbox Code Playgroud)

r mongolite

1
推荐指数
2
解决办法
4598
查看次数

标签 统计

mongolite ×13

r ×12

mongodb ×8

json ×3

aggregate ×1

group-by ×1

opencpu ×1

shiny ×1

shinyapps ×1