He colección que contiene los documentos con el siguiente esquema. Quiero filtro/buscar todos los documentos que contienen el género femenino y el agregado de la suma de brainscore. He intentado de la siguiente declaración y muestra una inválida tubería de error.

db['!all'].aggregate({ $and: [ {'GENDER' :  'F'} , {'DOB' : { $gte : 19400801, $lte : 20131231 }} ]  }, { $group : { _id : "$GENDER", totalscore : { $sum : "$BRAINSCORE" } } } )

Esquema:

{
"_id" : ObjectId("53f63fc8f2b643f6ebb8a1a9"),
"DOB" : 19690112,
"GENDER" : "F",
"BRAINSCORE" : 65
},
{
"_id" : ObjectId("53f63fc8f2b643f6ebb8a1a2"),
"DOB" : 19950116,
"GENDER" : "F",
"BRAINSCORE" : 44
},
{
"_id" : ObjectId("53f63fc8f2b643f6ebb8a902"),
"DOB" : 19430216,
"GENDER" : "M",
"BRAINSCORE" : 71
}

Ayuda por favor…

InformationsquelleAutor hello mtyj | 2014-08-21

2 Comentarios

  1. 109

    Tienes que utilizar $match:

    db['!all'].aggregate([
      {$match:
        {'GENDER': 'F',
         'DOB':
          { $gte: 19400801,
            $lte: 20131231 } } },
      {$group:
         {_id: "$GENDER",
         totalscore:{ $sum: "$BRAINSCORE"}}}
    ])

    Salidas:

    { "_id" : "F", "totalscore" : 109 }
    • ¿qué [‘!todos los’] representan ?
    • Me acaba de copiar ese código de la pregunta. ‘!todos’, parece ser el nombre de la colección, pero no relacionados con la respuesta en sí
    • ¿[!todos] significa que todas las colecciones ?
    • No, no me lo creo
    • [!todos] debería significa que NO TODOS y es una manera extraña a nombre de una colección 😉
  2. 6

    De la muestra de trabajo de consulta :

    db.getCollection('NOTIF_EVENT_RESULT').aggregate([
    {$match:
        {'userId': {'$in' : ['user-900', 'user-1546']},
        'criteria.operator': 'greater than', 'criteria.thresold' : '90', 'category' : 'capacity'}
    },
    {"$group" :  {_id : {userId:"$userId"}, "count" : { "$sum" : 1} } }
    ])

Dejar respuesta

Please enter your comment!
Please enter your name here