Je souhaite fournir une condition pour mon regroupement dans Mongoid, mais comment puis-je envoyer plusieurs valeurs pour un attribut dans le hash des conditions? Voilà ce que je veux faire:Mongoid `conditions group()`
PageViews.collection.group(
cond: {page_id: ['4e6912618083ab383e000010', '4e6912618083ab383e000009']},
key: 'timestamp',
initial: {count: 0},
reduce: "function(x, y) {y.count += x.count;}"
)
Ainsi donc toute PageView
avec l'une ou l'autre page_id
sera en dehors de la requête, mais je ne peux pas sembler se rendre au travail à tout le hachage de condition (cond
)! Qu'est-ce que je fais mal ici, je suis vraiment confus.
Voici les API docs pour la méthode group()
: http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method
Toute aide serait grandement appréciée.
mise à jour
L'exécution de la requête en tant que tel:
PageViews.collection.group(
cond: {page_id: { $in : ['4e6912618083ab383e000010', '4e6912618083ab383e000009']}},
key: 'timestamp',
initial: {count: 0},
reduce: "function(x, y) {y.count += x.count;}"
)
Renvoie l'erreur suivante, mais la syntaxe semble bien pour moi:
SyntaxError: (irb):170: syntax error, unexpected ':', expecting tASSOC
cond: {page_id: { $in : ['4e6912618083ab383e000010',...
^
(irb):170: syntax error, unexpected '}', expecting $end
...', '4e6912618083ab383e000009']}},
... ^
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands/console.rb:45:in `start'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands/console.rb:8:in `start'
from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.0/lib/rails/commands.rb:40:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Il est frustrant que il n'y a pas d'exemples de cela partout, les docs disent que t il paramètre condition est en tant que tel:
(String, BSON::Code) :cond — default: {} — A document specifying a query for filtering the documents over which the aggregation is run (optional).
Donc, s'il faut un String
ou BSON::Code
, qu'est-ce que cela ressemblerait-il?
Hmm, me semble donner une erreur de syntaxe: '(RIR): 158: erreur de syntaxe, unexpected '}', attendre $ fin ... ',' 4e6912618083ab383e000009 ']}}, ... ' –
Avez-vous placé le crochet d'ouverture entre' page_id: 'et' $ in'? – Russell
Merci beaucoup pour votre aide, j'ai mis à jour ma question avec ce qui se passe. –