Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Mongoid:通过一次调用创建多个对象_Ruby On Rails_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails 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

我有1000个用户,我将从Twitter上检索,我想一次保存他们,而不是单独插入1000个

我怎样才能在Mongoid上做到这一点?像这样的东西会很震撼:

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查询。与任何新技术一样,一开始就需要相当多的人手