MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Ungültiger Operator '$size' in Aggregation

Der Grund liegt darin, dass $size Der Array-Aggregationsoperator ist neu in MongoDB 2.6 und Sie führen tatsächlich MongoDB 2.4 aus.

Ich schlage vor, dass Sie Ihren MongoDB-Server auf mindestens 3.0 aktualisieren. Aber wenn Sie aus irgendeinem Grund jetzt kein Upgrade durchführen möchten, müssen Sie $unwind das „players“-Array und $group von "_id" und geben Sie dann die Anzahl zurück, indem Sie $sum Akkumulator-Operator.

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