【问题标题】:Mongolite and R蒙古石和R
【发布时间】:2017-02-12 19:40:52
【问题描述】:

我有下面的代码,为什么它不起作用?谢谢。

library(mongolite)
library(jsonlite)

id <- c('35325073','35325078')

id_list_JSON <- toJSON(id)

test3 <- m1$find('{"_id": {"$in": id_list_JSON}}', fields = '{"_id" : 1, "f.fid" : 1, "ud" : 1}')

错误:无效的 JSON 对象:{"_id": {"$in": id_list_JSON}}

【问题讨论】:

  • JSON 只是一个字符串。 R 不会解析它并用变量的值替换看起来像变量名的东西。所以{.... id_list_JSON}} 无效,因为这是 json 中的一个裸字符串,而不是 R 变量。
  • 马克,感谢 cmets。那么有什么解决办法呢?
  • 从未做过 R,但只是做一个字符串构建:'{"_id....:' + id_list_json + '}}',但你必须确保你正在构建语法正确的 json。如果你没有做到 100% 正确,那只会是另一个语法错误。

标签: r mongolite


【解决方案1】:

@Marc B 是正确的,因为您必须构建字符串才能使用 id_list_JSON 中包含的值。

在 R 中,您可以使用 paste0 来执行此操作

test3 <- m1$find(paste0('{"_id": {"$in": ', id_list_JSON, '}}'), 
                 fields = '{"_id" : 1, "f.fid" : 1, "ud" : 1}')

paste0 行给出的位置

paste0('{"_id": {"$in": ', id_list_JSON, '}}')

# "{\"_id\": {\"$in\": [\"35325073\",\"35325078\"]}}"

这应该在您的查询中起作用。

【讨论】:

    猜你喜欢
    • 2012-04-03
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多