3

アトミックな「$push」と「$set」に対する 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( ??? )

プルを使用してストーリーをアトミックに削除するにはどうすればよいですか?

4

1 に答える 1

7

親 ID と子 ID だけを使用して埋め込みドキュメントをアトミックに削除するには、次のようにします。

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

親ドキュメントが既にある場合は、代わりにこれを行うことができます。

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

今、私は質問をしたこと(そしてそれに答えたこと)が恥ずかしいと感じています。これは非常に簡単です。

于 2010-11-06T02:30:55.240 に答える