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