我無法使用Model.find(id)查找記錄。Model.find不適用於mongoid
Food.find('548210e8d5a81037af06b2d6') => Mongoid::Errors::DocumentNotFound
但是,當我嘗試使用列名找到相同的記錄時,我將返回相同的記錄。
Food.where({name:"Aloo Matar" }).first
=> #<Food _id: 548210e8d5a81037af06b2d6, rawOrPrepared: "P", name: "Aloo Matar", tags: "vegetable", alternateNames: "potatoes">
對我而言,根據字符串找到不同的作品。請參閱下面的代碼。
Food.where({_id: "zyCMnbTPENeXkhawT" })
=> #<Mongoid::Criteria
selector: {"_id"=>"zyCMnbTPENeXkhawT"}
options: {}
class: Food
embedded: false>
2.2.1 :017 > Food.where({_id: '548210e8d5a81037af06b2d6' })
=> #<Mongoid::Criteria
selector: {"_id"=>BSON::ObjectId('548210e8d5a81037af06b2d6')}
options: {}
class: Food
embedded: false>
但是第一個代碼返回對象,而第二個代碼引發異常。
請幫我解決這個問題。
感謝, 野兔
_id是一個看起來像'BSON :: ObjectId'還是一個真正的'BSON :: ObjectId'的字符串? ''db.foods.findOne({_id:'548210e8d5a81037af06b2d6'})''從'mongodb' CLI工具中說了什麼?如何'db.foods.findOne({_id:ObjectId('548210e8d5a81037af06b2d6')})'? –
從mongo控制檯,我能夠找到數據。請參閱mongo客戶端的以下代碼。 db.foods.find({_ id:「548210e8d5a81037af06b2d6」}) {「_id」:「548210e8d5a81037af06b2d6」,「manufacturer」:「自制」,「修改」:「2014-12-10T06:47:56.275Z」 ,「name」:「Aloo Matar」} > > db.foods.find({_ id:「zyCMnbTPENeXkhawT」}) {「_id」:「zyCMnbTPENeXkhawT」,「name」:「Recipe_281015072818」,「tags」 「配方」,「製造商」:「自制」,「alternateNames」:「糙米和胡蘿蔔」,「修改」:「2015-10-28T07:28:20.542Z」} –
我可以從mongodb客戶端獲取這些數據。 –