Querying RMongo with ObjectId

2019-02-15 00:26发布

问题:

Is there a way to query in RMongo with an ObjectId?

Something like:

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

Perhaps by importing a bson library?

回答1:

RMongo's dbGetQuery() function is expecting MongoDB Extended JSON syntax for the provided query string.

The MongoDB Extended JSON equivalent of ObjectId("<id>") is { "$oid": "<id>" }:

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


回答2:

mongo.oid.from.string {rmongodb}

Create a mongo.oid object ftom a string Package: rmongodb Version: 1.5.3 Description Create from a 24-character hex string a mongo.oid object representing a MongoDB Object ID.

Usage mongo.oid.from.string(hexstr) Arguments hexstr (string) 24 hex characters representing the OID. Note that although an error is thrown if the length is not 24, no error is thrown if the characters are not hex digits; you'll get zero bits for the invalid digits.

Details See http://www.mongodb.org/display/DOCS/Object+IDs

Values



回答3:

Try the new mongolite package:

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


标签: r rmongo