Ruby on rails Mongoid:通过一次调用创建多个对象
我有1000个用户,我将从Twitter上检索,我想一次保存他们,而不是单独插入1000个 我怎样才能在Mongoid上做到这一点?像这样的东西会很震撼:Ruby on rails Mongoid:通过一次调用创建多个对象,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我有1000个用户,我将从Twitter上检索,我想一次保存他们,而不是单独插入1000个 我怎样才能在Mongoid上做到这一点?像这样的东西会很震撼: TwitterUser.createMany([{:name=>u1}, {:name=>u2},{:name=>u3}] ) 您应该使用Mongo ruby驱动程序来实现这一点。您可以将哈希数组传递给,以便一次创建多个文档(有关此操作的详细信息)。Mongoid可以轻松访问ruby驱动程序 代码如下所示: user_li
TwitterUser.createMany([{:name=>u1}, {:name=>u2},{:name=>u3}] )
您应该使用Mongo ruby驱动程序来实现这一点。您可以将哈希数组传递给,以便一次创建多个文档(有关此操作的详细信息)。Mongoid可以轻松访问ruby驱动程序 代码如下所示:
user_list = twitter_accounts.map do |account|
# create a hash of all the fields to be stored in each document
{ 'name' => account.name,
'username' => account.username
# some other fields...
}
end
Mongoid.master['twitter_users'].insert(user_list)
只需直接使用MongoidModel.create。您几乎可以得到它,它是
create
,而不是createMany
。您可以这样使用它:
user_list = twitter_accounts.map do |account|
# create a hash of all the fields to be stored in each document
{ 'name' => account.name,
'username' => account.username
# some other fields...
}
end
Mongoid.master['twitter_users'].insert(user_list)
TwitterUser.create([
{用户名:“u1”,显示名称:“显示名称1”},
{用户名:“u2”,显示名称:“显示名称2”},
{用户名:“u3”,显示名称:“显示名称3”}
])
此外,正如所指出的,将其与以下内容一起使用是一个好主意:
TwitterUser.create(
@用户_array.map do | u|
{username:u.username,显示\u name:u.name}
结束
)
从文档中: 将一个或多个文档插入数据库 在数据库中插入一个或多个文档,如果发生验证错误,将引发错误
只是想知道,为什么你必须“一次性”完成这项工作?这是一项面向用户的功能。我执行此操作时,用户将等待;)我想我可以缓存足够多的数据,让推特部分快速工作,尽管这很好地解决了这个问题。非常感谢。酷。MongoRuby驱动程序非常酷,Mongoid使得访问它非常容易。不要害怕使用ruby驱动程序和原始MongoDB查询。与任何新技术一样,一开始就需要相当多的人手