我得到了以下代码:
from pymongo import MongoClient
client = MongoClient('ipOfServer')
db = client.admin
db.authenticate('login', 'password',
source='admin_')
heh = list(db.events.aggregate(
[
{"$match": {"status": 'start'}},
{"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
{"$project": {"_id": 1, "Count": {"$size": "$players"}}}
]))
print(heh)
这适用于编写并测试它code result while testing的原始程序员。但是当我尝试运行它时,我收到了这个错误:
pymongo.errors.OperationFailure: exception: invalid operator '$size'
我使用mongo版本2.4.14和python 2.7.12与sublime文本编辑器。任何人都可以提出解决这个问题的方法,我们将不胜感激。
答案 0 :(得分:1)
原因是因为$size
数组聚合运算符是MongoDB 2.6中的新运算符,并且您实际上正在运行MongoDB 2.4。
我建议你将MongoDB服务器升级到至少3.0。但如果由于某种原因你现在不想升级,你需要$unwind
"玩家"数组和$group
by" _id"然后使用$sum
累加器运算符返回计数。
heh = list(db.events.aggregate(
[
{"$match": {"status": 'start'}},
{"$group": {"_id": "$eventName", "players": {"$addToSet": "$uid"}}},
{"$unwind": "$players"},
{"$group": {"_id": "$_id", "Count": {"$sum": 1}}},
]))