使用正则表达式的 Rmongodb 无法按预期工作

Rmongodb using regex does not work as expected

我在使用正则表达式从 R(使用 rmongodb 包)查询 mongodb 时遇到问题。下面是我的代码:

buf <- mongo.bson.buffer.create()
regex <- mongo.regex.create("air filter*$", options="i")
mongo.bson.buffer.append.regex(buf, "keyword", regex)
query <- mongo.bson.from.buffer(buf)
res <- mongo.find.all(mongo,collection,query)

但是我从数据库中得到 'res' 中的空结果。但是,当我直接检查数据库中的正则表达式时,它会给出有效结果。当我在上面的查询 (eg: "air filter") 中给出没有正则表达式的关键字名称时,它工作正常。

我尝试了所有可能的组合,但都是徒劳。

以下是示例文档

[  
   {  
      "_id":ObjectId("55dcdc72473fdf86c0020d96"),
      "_class":"",
      "keyword":"air filter",
      "synonyms":[  

      ]
   },
   {  
      "_id":ObjectId("55dcdc72473fdf86c0020e0f"),
      "_class":"",
      "keyword":"cabin air filter",
      "synonyms":[  

      ]
   },
   {  
      "_id":ObjectId("55dcdc79473fdf86c002143b"),
      "_class":"",
      "keyword":"secondary air filter",
      "synonyms":[  

      ]
   }
]

注意:我试过 json 字符串但无法使用,因为我需要将变量作为输入正则表达式传递,即我使用 paste0(component[1], "*$") 创建正则表达式,其中组件列表包含空气过滤器等术语。

能否请您提供一些指导?

谢谢!

这是我尝试过的并且有效

library(rmongodb)
mongo <- mongo.create(host = "localhost", db = "test")

components <- list("air filter", "engine oil")

for (component in components) {
    jsonStr <- paste0('{"keyword" : {"$regex" : "', component, '$"}}')
    mongo.bson.from.JSON(jsonStr)
    res <- mongo.find.all(mongo, "test.coll", mongo.bson.from.JSON(jsonStr))
    print(res)
}