【发布时间】:2013-12-05 17:11:06
【问题描述】:
有没有办法在 RMongo 中使用 ObjectId 进行查询?
类似:
results <- dbGetQuery(mongo, "users", "{'_id': 'ObjectId('5158ce108b481836aee879f8')'}")
也许通过导入 bson 库?
【问题讨论】:
-
RMongo 的任何解决方案。给出的两个答案针对不同的库。
有没有办法在 RMongo 中使用 ObjectId 进行查询?
类似:
results <- dbGetQuery(mongo, "users", "{'_id': 'ObjectId('5158ce108b481836aee879f8')'}")
也许通过导入 bson 库?
【问题讨论】:
RMongo 的 dbGetQuery() 函数期待 MongoDB Extended JSON syntax 提供的查询字符串。
ObjectId("<id>") 的 MongoDB 扩展 JSON 等效项是 { "$oid": "<id>" }:
results <- dbGetQuery(mongo, "users", "{'_id': { '$oid': '5158ce108b481836aee879f8' }}")
【讨论】:
试试新的mongolite包:
library(mongolite)
m <- mongo("users")
m$find('{"_id":{"$oid":"5158ce108b481836aee879f8"}}')
【讨论】:
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
价值观
【讨论】: