使用 mongolite(R 和 MongoDB)运行查询时出错

Posted

技术标签:

【中文标题】使用 mongolite(R 和 MongoDB)运行查询时出错【英文标题】:Error when running query using mongolite (R and MongoDB) 【发布时间】:2020-03-27 10:50:57 【问题描述】:

在我的本地主机中,y 在 MongoDB 中创建了一个数据库 (coches) 和一个集合 (dtc)。我的收藏包含超过 200 万份文档。

我想将文档子集连接到 R。我在 MongoDB 中运行的查询是 this question 之一,我在这里复制/粘贴:

db.getCollection("dtc")
  .find(
    "payload.fields.MDI_CC_DIAG_DTC_LIST":  $exists: true ,
    "payload.asset":  $exists: true 
  )

这个子集产生了 2265 个文档。

我在 RStudio 中加载了 mongolite 包来连接 MongoDB 和 R。

library(mongolite)
c <- mongo(collection = "dtc", db = "coches")

但是,当我尝试这些查询时:

# query 1
c$find('
    "payload.fields.MDI_CC_DIAG_DTC_LIST":  $exists: true ,
    "payload.asset":  $exists: true 
  ')

# query 2
c$find(query = '
    "payload.fields.MDI_CC_DIAG_DTC_LIST":  $exists: true ,
    "payload.asset":  $exists: true 
  ')

我收到此错误:

Error: Invalid JSON object:  "payload.fields.MDI_CC_DIAG_DTC_LIST":  $exists: true , "payload.asset":  $exists: true  

原始文档是 JSON 嵌入文件。

编码有什么问题?我错过了什么?

【问题讨论】:

【参考方案1】:

一段时间后,检查不同的地方,我遇到了问题,因此可以解决它。问题是$exists 必须用引号引起来("$exists")。所以代码是这样的:

dtc$find(' 
        "payload.fields.MDI_CC_DIAG_DTC_LIST" :  
            "$exists" : true
        , 
        "payload.asset" :  
            "$exists" : true
        
    ')

【讨论】:

以上是关于使用 mongolite(R 和 MongoDB)运行查询时出错的主要内容,如果未能解决你的问题,请参考以下文章

?? R ??“@”??? MongoDB ??

使用 R 使用“@”连接到 MongoDB 密码

R-mongodb-访问mongodb并调取数据_II

使用Mongolite获取集合中所有键的名称

尝试使用 R 和 mongodb 在 ggplot 中制作条形图

R 和 MongoDB:数组存储为以索引为键的对象