【问题标题】:Turn MongoDB _id into an ObjectID object using Ruby to Retrieve Unique Record使用 Ruby 将 MongoDB _id 转换为 ObjectID 对象以检索唯一记录
【发布时间】:2011-11-14 01:41:26
【问题描述】:

我正在尝试使用标准类型 ObjectID 的 _id 检索存储在 MongoDB 中的文档。我将 _id 表示为字符串。在本例中为“4ec064e406a6f1205a000001”

所以我这样做:

require 'mongo'

connection = Mongo::Connection.new("localhost", 27017).db("store")
collection = connection.collection("products")

id = '4ec064e406a6f1205a000001'

# What should the following line be? This doesn't work.
collection.find_one("_id" => Mongo::ObjectID.from_string(id))

我意识到这是一个 BSON ObjectID,我尝试了一些不同的方法来使用 bson gem 来生成正确的对象,但我无法让它工作。我还尝试使用类似的代码将对象的 _id 之一更改为标准 Int32,并且效果很好。我不知道如何创建正确的 ObjectID 对象以用于此查询。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby mongodb sinatra nosql


    【解决方案1】:

    以下是将字符串放入 BSON ObjectID 的正确语法:

    collection.find_one({:_id => BSON::ObjectId("4ec064e406a6f1205a000001")})
    

    【讨论】:

    • 我意识到这是几年前的事情,但仅供参考,find_one 不再是 Mongo::Collection 上的方法。唯一对我有用的是 find().first。在 Gemlock 中使用 mongo (2.3.0)。
    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    相关资源
    最近更新 更多