tags:

views:

223

answers:

3

Hi,

I'm trying to retrieve a document when I have an object id - however, the query does not work.

@collection = @db.collection('Mylist')
@result = @collection.find({"_id" => params[:id]})

I've tried variations of the query - it always yields empty - however when I try a query on the collection such as below, that would work.

@result = @collection.find({"Exist" => "True"}) 

Why? It is strange that complex queries work but a simple query by _id returns nothing.

If possible, I don't want to use MongoMapper.

Thanks

+2  A: 

This would also work: @coll.find_one(ObjectID.from_string(params[:id]))

Rubycut
+4  A: 

Found it - you need to wrap it like this -

find({"_id" => Mongo::ObjectId(params[:id])}) 
RedNax
+2  A: 
find(:_id => BSON::ObjectID(params[:id])
Victor S