Fonction Aggregate

Par joxs, il y a 10 ans


Javascript NodeJS

Bonjour,

J'ai un soucis avec le fonction aggregate de node js, j'aimerais utiliser ce tableau:

{ "_id" : "MRbCLifaZ76jC368Z", "name" : "blablabla", "type" : 1, "users" : [ { "id" : "RARbvfCv5qpf3tRsP", "amount" : 3 }, { "id" : "rGsnFMtWsFD9dZ5vD", "amount" : 2.0000000000000000 }, .... ] }, ....

Et j'aimerais choper le tableau complet et seulement les infos de l'utilsateur de mon choix, du style:

{ "_id" : "MRbCLifaZ76jC368Z", "name" : "blablabla", "type" : 1, "users" : [ { "id" : "RARbvfCv5qpf3tRsP", "amount" : 3 }, ] }, ....

J'ai donc essayé:

db.find({}, {_id: 0, users: {$elemMatch: {id: "RARbvfCv5qpf3tRsP"}}})

Mais ça ne fonctionne pas, ça retourne les tableaux avec tous les utilisateurs

J'ai cherché un peu et j'ai trouve la fonction aggregate, j'ai donc essayé ça:

db.aggregate([ {$match: {"users.id": "bvR2jA4XorptSKmKn"}}, {$project: { users: { $filter: { input: '$users', as: 'user', cond: {$eq: ['$$user.id', 'bvR2jA4XorptSKmKn']} }}, _id: 0 }} ])

Mais ça ne me revois rien du tout

J'aimerais avoir un petit coup de pouce si quelqu'un connais la fonction,

Merci !

6 réponses

joxs, il y a 10 ans

Merci de vos réponses,

Oui c'est une fonction MongoDB, que j'utilise avec meteor qui ne prend pas nativement aggregate en charge, j'utilise donc le package meteorhacks:aggregate pour meteor.

Meteor intègre donc nativement MongoDB, je ne pense pas avoir besoin de mongoose si ?

Defy, il y a 10 ans

ca serais un plus mongoose, ca facilite vraiment la vie un ORM

Defy, il y a 10 ans

ha effectivement, je ne savais pas pour mongoose et meteor, du coup je ne serais pas d'une grande utilité sur ce thread, je n'ai jamais utilisé meteor. Désolé @joxs

joxs, il y a 10 ans

Pas de soucis, merci quand meme !