将字符串ID与BSON :: ObjectId进行比较

时间:2012-09-25 08:17:49

标签: ruby arrays mongodb mongoid

我有一个由BSON::ObjectId类型组成的数组,我希望它能将某些ID作为字符串进行比较。

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

由于类型不同,这不起作用,我可以将字符串转换为BSON::ObjectId吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:12)

Mongoid 2.x与10gen的驱动程序:

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

带有轻便摩托车的Mongoid 3:

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

Mongoid 4(轻便摩托车)/ Mongoid 5/6/7(mongo):

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

答案 1 :(得分:5)

您可以使用BSON::ObjectId(@my_id_as_a_string)将您的ID表示为BSON::ObjectId

引用http://api.mongodb.org/ruby/current/BSON.html#ObjectId-class_method

答案 2 :(得分:0)

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

这对我有用,它成功删除了数据库中的记录