我有1000個用戶,我將從Twitter中檢索,並且我想一次保存它們,而不是單獨進行1000次插入。Mongoid:通過一次調用創建多個對象
我怎樣才能在Mongoid上做到這一點?像這樣的東西會搖滾:
TwitterUser.createMany([{:name=>u1}, {:name=>u2},{:name=>u3}])
我有1000個用戶,我將從Twitter中檢索,並且我想一次保存它們,而不是單獨進行1000次插入。Mongoid:通過一次調用創建多個對象
我怎樣才能在Mongoid上做到這一點?像這樣的東西會搖滾:
TwitterUser.createMany([{:name=>u1}, {:name=>u2},{:name=>u3}])
你應該使用Mongo的紅寶石驅動程序來做到這一點。您可以將一組散列傳遞給insert
method以一次創建多個文檔(有關此google groups discussion的更多信息)。 Mongoid使訪問Ruby驅動程序變得很容易。
的代碼會是這個樣子:
只需直接使用MongoidModel.create。
你差點拿到了,這是create
,而不是createMany
。您可以使用它像這樣:
TwitterUser.create([
{ username: "u1", display_name: "Display Name 1" },
{ username: "u2", display_name: "Display Name 2" },
{ username: "u3", display_name: "Display Name 3" }
])
此外,作爲@bowsersenior指出,這是一個好主意,用Array#Map
使用它:
TwitterUser.create(
@users_array.map do |u|
{ username: u.username, display_name: u.name }
end
)
插入一個或多個文檔到數據庫
插入一個或多個文檔到數據庫中,如果發生驗證錯誤引發錯誤。
只是想知道,爲什麼你一定要這樣做「一槍」? – 2010-12-07 22:33:17
這是一個面向用戶的功能。用戶會等待,而我這樣做;)我叮叮我可以緩存足夠的數據,以使twitter部分工作足夠快 – 2010-12-08 10:41:51