The data is given as follows:
{
"_id" : { "$oid" : "546b79a2e4b0f7bfbaa97cc7" },
"title" : "Eyewitness: Highlands, Scotland",
"description" : "Photographs from the Guardian Eyewitness series",
"timeStamp" : "14/11/2014",
"category" : "news",
"url" : "http://www.theguardian.com/world/picture/2014/nov/14/1",
"source" : "http://www.theguardian.com/",
"mainStory" : "\n",
"keywords" : [ "Wildlife", "Scotland" ]
}
But when I use the following command to find something, the error comes out
db.guardian.find({ "_id": {"$oid": '546b79a2e4b0f7bfbaa97cc7'}})
How can I find the document with specific $oid
.
You need to convert the id string to an ObjectId like this:
db.guardian.find({ "_id": ObjectId("546b79a2e4b0f7bfbaa97cc7") })
The reason being that { "$oid" : "546b79a2e4b0f7bfbaa97cc7"}
is the same as ObjectId("546b79a2e4b0f7bfbaa97cc7")
just in a different format.
Refer to the docs for more details.
You can add below class methods to your model
def self.serialize_from_session(key, salt)
(key = key.first) if key.kind_of? Array
(key = BSON::ObjectId.from_string(key['$oid'])) if key.kind_of? Hash
record = to_adapter.get(key)
record if record && record.authenticatable_salt == salt
end
def self.serialize_into_session(record)
[record.id.to_s, record.authenticatable_salt]
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With