我有模特用户:
class User
field :username, type: String
embeds_many :products
end
class Product
field :name, type: String
embedded_in :user
end
我想进行单一操作:
这适用于upserting:
User.new(username: 'Hello').upsert
问题是这将删除嵌入式产品(未指定products属性)。
我可以让mongoid跳过将数组设置为空吗? 我可以问mongoid在产品阵列的最后推出新产品吗? 像这样:
User.new(username: 'Hello').push(products: [Product.new(name: 'Screen')]).upsert
答案 0 :(得分:0)
最后,我最后通过手动编写以下查询:
User.mongo_client[:users].update_one({username: 'Hello'},
{"$set" => {first_name: 'Jim', last_name: 'Jones'},
"$pushAll" => [products: [{name: 'Screen'}, {name: 'Keyboard'}]
},
upsert: true)
其中:
在第二个哈希中,您还可以指定$ inc,$ dec,$ pop,$ set等...这非常有用。