使用一次操作存储一组 mongoid 文档

Storing a collection of mongoid documents with one operation

当使用 Moped gem 时,我可以存储一个哈希数组:

users = [{username: "ben", password: "123456", type: "admin" }, {username: "joe", password: "abcd1234" }]
Mongoid::Sessions.default["collection"].insert(users)

对于 mongoid 文档,它看起来像:

class User
  field :username, type: String
  field :password, type: String
end

users.each { |user_hash| User.create(user_hash) }

也就是每一个插入操作。 你知道保持单一操作的方法吗?也许是 ActiveRecord 中的交易?

您可以将文档转换回哈希并通过一次调用 #create:

插入它们
User.create(users.map(&:attributes))