class parent
fields :count
embed_many :children
end
class children
embed_in: :parent
end
控制台
obj = Parent.first
obj.count #=> 2
obj.childrens #=> [children, children]
#here-to-update
obj.count = 5
obj.childrens.delete( obj.childrens.last )
#mongo-query
MOPED: 127.0.0.1:27017 UPDATE database=db collection=parents selector={"_id"=>"52b277c62aa194882f000007"} update={"$pull"=>{"childrens"=>{"_id"=>3}}} flags=[]
obj.reload
obj.count #=> 2 (does not update, Bug)
obj.childrens #=> [children]
在关系数据库中,这不是一个错误,因为你需要更新2个表。但是在mongo中,因为它是嵌入文件。我认为发送2个查询来更新它是一种浪费。
任何解决方案?
答案 0 :(得分:0)
你忘记了's'来命名你的嵌入关系。
class Order
field :count, type: Integer
embeds_many :Products
end
class Product
embedded_in :Order
end
另外,请保存更改。
Order.set(:count, 5)
你知道你可以做吗?
order = Order.first
order.product_ids.count
然后,您的订单模型中不需要字段。
编辑:
- 好吧,要更改count
字段值,您必须更新模型然后保存它
- 删除嵌入关系时,会删除嵌入对象
你不能只用一个来做这两个操作
希望我回答。