【问题标题】:How to delete an Embedded Doc in MongoMapper using atomic Pull?如何使用原子拉删除 MongoMapper 中的嵌入式文档?
【发布时间】:2010-11-06 01:47:20
【问题描述】:

我已成功使用 MongoMapper 对原子“$push”和“$set”的内置支持,但无法弄清楚“$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( ??? )

如何使用拉取自动删除故事?

【问题讨论】:

    标签: ruby-on-rails ruby mongodb mongomapper


    【解决方案1】:

    要使用简单的父 id 和子 id 原子地删除嵌入文档,您可以这样做:

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

    如果您已经拥有父文档,则可以改为这样做:

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

    现在我为提出这个问题(并回答它)感到尴尬。这很简单。

    【讨论】:

    • 这是 StackOverflow 的优点。你也觉得有必要回答这个问题,以便其他人也可以使用这些信息。谢谢!
    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多