Comment puis-je obtenir des éléments uniques dans ce tableau?

Utilisation du mongoïde Malheureusement, Mongoid ne permet pas de sélectionner unique / distinct! Ont obtenu ces résultats. Comme vous pouvez le voir, il y a 7 résultats. Si vous regardez attentivement (à user_id), il n’y a que 2 utilisateurs.

[ #, #, #, #, #, #, # ] 

Je regardais ça et je pensais pouvoir faire quelque chose de similaire pour que mon tableau ressemble maintenant à ceci:

 [ #, # ] 

Je ne m’inquiète pas de la combinaison de résultats extraite. Tant que j’ai un identifiant d’utilisateur unique dans le jeu de résultats. Quelqu’un sait comment cela peut être réalisé?

Vous pouvez simplement utiliser la méthode uniq . En supposant que votre tableau est ary , appelez:

 ary.uniq{|x| x.user_id} 

et cela retournera un ensemble avec un user_id unique.

Cela devrait fonctionner pour vous:

Considérer La table 1 a une colonne par le nom de l’ activité qui peut avoir la même valeur dans plus d’un enregistrement. C’est ainsi que vous allez extraire UNIQUEMENT les entrées uniques du champ d’ activité dans Table1.

 #An array of multiple data ensortinges @table1 = Table1.find(:all) #extracts **activity** for each entry in the array @table1, and returns only the ones which are unique @unique_activities = @table1.map{|t| t.activity}.uniq 

Pour ceux qui le Mongoid::Criteria#distinct , vous pouvez maintenant utiliser la Mongoid::Criteria#distinct d’Origin pour ne sélectionner que des valeurs distinctes de la firebase database:

 # Requires a Mongoid::Criteria Attendees.all.distinct(:user_id) 

http://mongoid.org/en/mongoid/docs/querying.html (v3.1.0)

Avez-vous regardé cette page?

http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Distinct

Cela pourrait vous faire gagner du temps?

par exemple, db.addresses.distinct (“code postal”);

Au lieu d’utiliser un tableau, envisagez d’utiliser un hachage ou un ensemble .

Les ensembles se comportent comme un tableau, mais ils contiennent uniquement des valeurs uniques et, sous les couvertures, ils sont construits sur des hachages. Les ensembles ne conservent pas l’ordre dans lequel les éléments sont placés, contrairement aux tableaux. Les hachages ne conservent pas l’ordre non plus, mais peuvent être accédés via une clé afin de ne pas avoir à parcourir le hachage pour trouver un élément particulier.

Je préfère utiliser les hachages. Dans votre application, user_id pourrait être la clé et la valeur serait l’object entier. Cela supprimera automatiquement tous les doublons du hachage.

Ou, extrayez uniquement des valeurs uniques de la firebase database, comme suggéré par John Ballinger.

Errr, c’est un peu désordonné dans la vue. Mais je pense que cela fonctionne avec le groupe (http://mongoid.org/docs/querying/)

Manette

 @event_attendees = Activity.only(:user_id).where(:action => 'Attend').order_by(:created_at.desc).group 

Vue

 <% @event_attendees.each do |event_attendee| %> <%= event_attendee['group'].first.user.first_name %> <% end %>