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

Fin*_*nnn 5 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
Run Code Online (Sandbox Code Playgroud)

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

Ser*_*sev 12

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

BSON::ObjectId.new('506144650ed4c08d84000001')
Run Code Online (Sandbox Code Playgroud)

蒙古鞋3用轻便摩托车:

Moped::BSON::ObjectId.from_string('506144650ed4c08d84000001')
Run Code Online (Sandbox Code Playgroud)

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

BSON::ObjectId.from_string('506144650ed4c08d84000001')
Run Code Online (Sandbox Code Playgroud)

  • 这适用于我oid =`BSON :: ObjectId.from_string('506144650ed4c08d84000001')`但不适用于Mongoid 4上的`Moped`. (3认同)

And*_*ota 5

您可以使用BSON::ObjectId(@my_id_as_a_string)代表您的身份证明BSON::ObjectId

参考http://api.mongodb.org/ruby/current/BSON.html#ObjectId-class_method