MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Opérateur '$size' non valide dans l'agrégation

La raison est que $size L'opérateur d'agrégation de tableau est nouveau dans MongoDB 2.6 et vous exécutez actuellement MongoDB 2.4.

Je vous suggère de mettre à niveau votre serveur MongoDB vers au moins 3.0. Mais si pour une raison quelconque vous ne souhaitez pas mettre à niveau maintenant, vous devrez $unwind le tableau "players" et $group par "_id" puis renvoyez le nombre en utilisant le $sum opérateur d'accumulateur.

heh = list(db.events.aggregate(
    [
        {"$match": {"status": 'start'}},
        {"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
        {"$unwind": "$players"},
        {"$group": {"_id": "$_id", "Count": {"$sum": 1}}},
    ]))