2010-11-06 4 views
3

Я успешно использую MongoMapper встроенной поддержки для атомного «$ подталкивания» и «$ набора», но не может понять, «$» тянутьКак удалить встроенный документ в MongoMapper с помощью атома Pull?

class Feed 
    include MongoMapper::Document 
    many :stories 
end 

class Story 
    include MongoMapper::EmbeddedDocument 
    key :title, String 
end 

feed = Feed.first 
story = Story.new(:title => "Hello, world!") 
Feed.push(feed.id, :stories => story.to_mongo) #works fine 
Feed.set({:_id => feed.id, "stories.title" => "Hello, world!"}, "stories.$.title" => "Foo") #works fine 

Feed.pull(???) 

Как я могу атомарно удалить историю, используя притяжение ?

ответ

7

атомарно удалить внедренный документ, используя просто родительский идентификатор и ребенка идентификатор вы можете сделать это:

Feed.pull(feed.id, :stories => {:_id => story.id}) 

Если у вас уже есть родительский документ, вы можете сделать это вместо того, чтобы:

feed.pull(:stories => {:_id => story.id}) 

Теперь я чувствую себя смущенным, задавая вопрос (и отвечая на него). Это довольно просто.

+2

Это хорошая вещь о StackOverflow. Вы также вынуждены отвечать на вопрос, чтобы кто-то еще мог использовать эту информацию. Благодаря! –

Смежные вопросы