开发者

How to delete an Embedded Doc in MongoMapper using atomic Pull?

开发者 https://www.devze.com 2023-01-23 13:47 出处:网络
I\'m successfully using MongoMapper\'s built-in support for atomic \"$push\" and \"$set\", but can\'t figure out \"$pull\"

I'm successfully using MongoMapper's built-in support for atomic "$push" and "$set", but can't figure out "$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开发者_Go百科, :stories => story.to_mongo) #works fine
Feed.set({:_id => feed.id, "stories.title" => "Hello, world!"}, "stories.$.title" => "Foo") #works fine

Feed.pull( ??? )

How can I atomically remove a story using pull?


To atomically remove an embedded document using simply the parent id and the child id you can do this:

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

If you already have the parent doc, you can do this instead:

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

Now I feel embarrassed for asking the question (and answering it). This is pretty straightforward.

0

精彩评论

暂无评论...
验证码 换一张
取 消