2012-11-24 5 views
-1

je veux MongoDB interroger cette requête SQL de:mongo db groupe pour

select x,y,message,foo from messege where x=1 and y=1 group by x,y order by _id DESC 

mais avec:

MongoCollection :: groupe

quelqu'un peut me aider?

+0

http://stackoverflow.com/questions/ 3214406/comment-grouper-par-avec-mongodb? Rq = 1 – int

+0

Je suis confus par la partie "ordre par" de la requête - vous n'aurez qu'un seul résultat puisque vous groupez par une seule valeur (x et y les deux 1) - êtes-vous sûr que c'est le SQL que vous voulez vraiment? Il n'y a pas d'agrégation ici. –

+0

@AsyaKamsky oui, je l'ai testé sur mysql – Musher

Répondre

1

Pour cette

select a,b,sum(c) csum from coll where active=1 group by a,b 

respectif est

db.coll.group(
      {key: { a:true, b:true }, 
      cond: { active:1 }, 
      reduce: function(obj,prev) { prev.csum += obj.c; }, 
      initial: { csum: 0 } 
      }); 

Vous ne pouvez pas trier les résultats que vous obtenez du groupe, vous pouvez utiliser tri pour trouver comme ça pour desc -1, 1 pour asc: .Sort ({ "_ id": - 1}) desc

cocher cette http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

+0

Comment pouvez-vous trier par _id quand cela ne fait pas partie de votre sortie? –

+0

Oui, vous pouvez, je viens d'éditer ma réponse J'ai oublié le() dans le tri – cezar

+0

où ajouter '.sort()'. groupe retourne l'objet et le tableau, pas le curseur. je veux obtenir les derniers enregistrements qui conviennent où. pas trier desc – Musher