7
votes

Mongoïde: créer de nombreux objets avec un seul appel

J'ai 1000 utilisateurs que je vais récupérer de Twitter et je voudrais les sauvegarder à un coup, par opposition à faire 1000 insertions individuellement.

Comment puis-je faire cela sur Mongoïde? Quelque chose comme ça va basculer: xxx


2 commentaires

Il suffit de vous demander, pourquoi devez-vous faire cela "en un coup"?


C'est une fonctionnalité d'utilisateur confrontée. L'utilisateur attendrait pendant que je fais cela;) je bricolage je peux mettre en cache suffisamment de données pour que la partie Twitter fonctionne assez vite


3 Réponses :


8
votes

Vous devez utiliser le pilote Mongo Ruby pour le faire. Vous pouvez transmettre un tableau de hachage à la Insérer Code> Méthode pour créer plusieurs documents à la fois (plus d'informations sur ce Discussion de groupes Google ). Mongoïde facilite l'accès au pilote Ruby.

Le code ressemblerait à ceci comme suit: P>

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)


3 commentaires

Cela répond bien. Merci!


Cool. Le pilote Mongo Ruby est très cool et que Mongoïde facilite l'accès. N'ayez pas peur d'utiliser le pilote Ruby et les requêtes brutes de MongoDB.


Oui, essayant d'arriver à ce niveau de compétence. Comme avec n'importe quelle nouvelle technologie, a besoin d'un peu de mains à la main au début



0
votes

Il suffit d'utiliser mongoidmodel.create directement.


0 commentaires

4
votes

Vous avez presque compris cela, c'est créer , pas créemanan . Vous pouvez l'utiliser comme ceci: xxx

aussi, comme @Bowsersenior pointe, C'est une bonne idée de l'utiliser avec Array # Carte : xxx


de la mongoïde # persistance docs:

modèle.create

Insérer un document ou plusieurs documents dans la base de données

modèle.create! < / strong>

Insérez un document ou plusieurs documents dans la base de données, soulevant une erreur si une erreur de validation se produit.


0 commentaires