【问题标题】:Querying RMongo with ObjectId使用 ObjectId 查询 RMongo
【发布时间】:2013-12-05 17:11:06
【问题描述】:

有没有办法在 RMongo 中使用 ObjectId 进行查询?

类似:

results <- dbGetQuery(mongo, "users", "{'_id': 'ObjectId('5158ce108b481836aee879f8')'}")

也许通过导入 bson 库?

【问题讨论】:

  • RMongo 的任何解决方案。给出的两个答案针对不同的库。

标签: r rmongo


【解决方案1】:

RMongo 的 dbGetQuery() 函数期待 MongoDB Extended JSON syntax 提供的查询字符串。

ObjectId("<id>") 的 MongoDB 扩展 JSON 等效项是 { "$oid": "<id>" }

 results <- dbGetQuery(mongo, "users", "{'_id': { '$oid': '5158ce108b481836aee879f8' }}")

【讨论】:

  • 非常感谢,我花了好几个小时才弄清楚这一点。当遇到此类问题时,是否有任何文档可供我查阅?
  • RMongo 包中包含一些文档(例如:cran.r-project.org/web/packages/RMongo/RMongo.pdf),但在细节和示例方面有点薄。一般来说,RMongo 依赖于标准 MongoDB 运算符和扩展 JSON 语法,如 MongoDB 手册 (docs.mongodb.org) 中所述。如果您找不到答案,我建议您在 StackOverflow 上提出一个新问题(或者为尚未得到足够关注的现有问题添加奖励)。
【解决方案2】:

试试新的mongolite包:

library(mongolite)
m <- mongo("users")
m$find('{"_id":{"$oid":"5158ce108b481836aee879f8"}}')

【讨论】:

    【解决方案3】:

    mongo.oid.from.string {rmongodb}

    从字符串中创建一个 mongo.oid 对象 包:rmongodb 版本:1.5.3 描述 从 24 个字符的十六进制字符串创建一个表示 MongoDB 对象 ID 的 mongo.oid 对象。

    用法 mongo.oid.from.string(hexstr) 论据 十六进制字符串 (字符串)代表 OID 的 24 个十六进制字符。 注意,虽然长度不是24会报错,但是如果字符不是十六进制数字就不会报错;对于无效数字,您将得到零位。

    详情 见http://www.mongodb.org/display/DOCS/Object+IDs

    价值观

    【讨论】:

    • 需要 rmongo 的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多