2014-07-10 5 views
0

im essayant d'exécuter la requête SQL suivante dans MongoDB

select organization from users 
group by organization 
having 2014-07-10 > date > 2014-07-10 

(i dnt knw si la syntaxe SQL est correcte ou non, mais je espère avoir donné une rude i ce que im essayant de faire ici)

premier j'ai essayé de voir combien d'utilisateurs ont été ajoutés hier

>>> users.find({u"timeCreated":{"$gte":date_yesterday, "$lt":date_today}}).count() 
6 

maintenant j'ai essayé de regrouper les utilisateurs par les organisations auxquelles ils appartiennent et a utilisé le résultat a été requête globale monogo

>>> user.aggregate([{'$group':{'_id': "$organization",'count':{"$sum":1}}},{"match":{u'timeCreated':{"$gte":date_yesterday, "$lt":date_today}}}]) 

suivant

{u'ok': 1.0, u'result':[]} 

qui est pas une telle requête.

j'ai même essayé d'utiliser la requête suivante pour obtenir toutes les entrées datées avant aujourd'hui

>>> user.aggregate([{'$group':{'_id': "$organization",'count':{"$sum":1}}},{"match":{u'timeCreated':{"$lt":date_today}}}]) 

mais la sortie reste le même.

la commande suivante fonctionne bien et donne une liste des organisations

>>> user.aggregate({'$group':{'_id': "$organization",'count':{"$sum":1}}}) 

peut me dire où je vais WRNG ??

P.S. Je suis nouveau à mongoDB

Répondre

1

L'inverse. Vous voulez faire correspondre les premiers éléments

user.aggregate([ 
    {"$match": {'timeCreated':{ "$gte":date_yesterday, "$lt":date_today } }}, 
    {'$group':{'_id': "$organization",'count':{"$sum": 1 } }} 
]) 

Notez également que cela est une des opérations de « pipeline » comme $group ou $project sont « destructrices » et n'émette les champs que vous spécifiez réellement.

+0

Merci Neil !! :) –

Questions connexes