2012-09-25 14 views
5

Tengo una gran variedad de compuestos de tipo BSON::ObjectId y quiero que va a comparar con algunas identificaciones como cadenas.ID de cadena a BSON :: OBJECTID

if my_array_of_BSON_ObjectIds.include?(@my_id_as_a_string) 
    # delete the item from the array 
else 
    # add the item to the array as a BSON::ObjectId 
end 

Esto no está funcionando como los tipos son diferentes, pueden vuelvo la cadena en un BSON::ObjectId? ¿Si es así, cómo?

Respuesta

11

2.x Mongoid con conductor de 10gen:

BSON::ObjectId.new('506144650ed4c08d84000001') 

Mongoid 3 con el ciclomotor:

Moped::BSON::ObjectId.from_string('506144650ed4c08d84000001') 

Mongoid 4 (ciclomotor)/Mongoid 5 (mongo):

BSON::ObjectId.from_string('506144650ed4c08d84000001') 
+3

Esto funciona para mí oid = 'BSON :: ObjectId.from_string ('506144650ed4c08d84000001')' pero no con 'Ciclomotor' en Mongoid 4. – Dex

0
collection.delete_one({"_id"=>BSON::ObjectId(params['id'])}) 

Esto funcionó para mí y se elimina el registro de la base de datos correctamente

Cuestiones relacionadas