2012-11-01 120 views
1

我有吐出记录到某个网页MongoDB的返回空数组

require 'mongo' 
require 'json' 

connection = Mongo::Connection.new 
db = connection.db("salemDB") 
db = Mongo::Connection.new.db("salemDB") 
newsCollection = db["news"] 

require 'sinatra' 
set:port, 2222 
get '/' do 
    redirect 'index.html' 
end 

get "/checkMail" do 
    newsCollection.find_one({}, {}).to_a.to_json 
end 

get "/:id" do 
newsCollection.find("_id" => params[:id]).to_a.to_json 
end 

(格式化用于阅读的乐趣)/ checkmail输出

[ 
    [ 
     "_id", 
     { 
     "$oid":"50880c8564a15e2631000001" 
     } 
    ], 
    [ 
     "date", 
     "2012-10-24T17:42:54+02:00" 
    ], 
    [ 
     "subject", 
     "This is a piece of news" 
    ] 
] 

/50880c8564a15e2631000001一个MongoDB的输出此

[] 

为什么它不给我的对象回来?

回答

3

这是因为ID实际上不是一个字符串或整数它是一个BSON::ObjectId,所以你必须查询其中的一个。

这应该工作

newsCollection.find("_id" => BSON::ObjectId(params[:id])).to_a.to_json