2015-12-31 4 views
3

Я пытаюсь удалить дубликат документа в своей коллекции. Вот мой код:Mongoid Удалить Соответствие документов ID

class Sites 
    include Mongoid::Document 
    store_in collection: "sites" 
end 

Sites.destroy_all(conditions: { _id: BSON::ObjectId("5685a45be4b06ab5911dcd12")}) 

Вот что возвращается:

D, [2015-12-31T17:39:16.488657 #10126] DEBUG -- : MONGODB | localhost:27017 | rails.find | STARTED | {"find"=>"sites", "filter"=>{"conditions"=>{"_id"=>BSON::ObjectId('5685a45be4b06ab5911dcd12')}}} 
D, [2015-12-31T17:39:16.488946 #10126] DEBUG -- : MONGODB | localhost:27017 | rails.find | SUCCEEDED | 0.000189083s 

Но когда я искать документ по-прежнему существует :(

{"_id"=>BSON::ObjectId('5685a45be4b06ab5911dcd12'), "name"=>"StackOverflow", "title"=>"Stack Overflow", "type"=>"Forum", "url"=>"http://www.stackoverflow.com"} 

Как навсегда удалить документ, ссылка с использованием Mongoid?

ответ

1

После многого итерации это работает для меня:

Sites.destroy_all({ :_id => BSON::ObjectId('5685a45be4b06ab5911dcd12')}) 

Я обнаружил, что Mongoid не очень помогает при устранении неполадок. Я должен сделать намного больше проб и ошибок, чтобы узнать, как это сделать :(

+0

'{:.. _id => BSON :: ObjectId ('5685a45be4b06ab5911dcd12')} 'и' {_id: BSON :: ObjectId ('5685a45be4b06ab5911dcd12')} 'разрешить к точному же хэшу AFAIK. –

4

Mongoid with 5.x следует намного ближе к методам AR, к которым мы привыкли, так что ваше поле id ведет себя аналогичным образом .

Sites.where(id: '5685a45be4b06ab5911dcd12').delete 

Чтобы иметь все необходимые функции обратного вызова можно назвать, а просто использовать .destroy Просто знаю, что это загружает все в память и может быть дорогим

Sites.where(id: '5685a45be4b06ab5911dcd12').destroy