Ich habe ein Python-Skript, in dem ich Pymongo verwende, um Sammlungen zusammenzufassen und bestimmte Operationen an ihnen auszuführen, wenn die Summe eines bestimmten Aggregats größer als eine Zahl ist (in diesem Fall 30).PyMongo TypeError
agg = collection.aggregate([{"$match":{"valid":1}}, {"$group": {"_id": {"createdby" : "$createdby" ,"addedtime" : "$addedtime", "empname" : "$empname"}, "count":{"$sum":1}}}])
cnt = 0
for eachAgg in agg:
print "eachAgg = ",eachAgg
if eachAgg['count'] >= 30:
Wenn ich dieses Skript ausführen, ich bin immer
eachAgg = ok
Traceback (most recent call last):
File "test.py", line 33, in <module>
if eachAgg['count'] >= 30:
TypeError: string indices must be integers
Ich verstehe nicht, wie $sum
Aggregat nicht eine ganze Zahl ist.
'eachAgg' ist ein String und' 'count'' ist offensichtlich ein String, also 'eachAgg [' count ']' verursacht ' TypeError: String-Indizes müssen ganze Zahlen sein. – DeepSpace
@DeepSpace Wenn ich die Abfrage 'db.tme_count.find ({" count ": {$ type: 2}})', bekomme ich kein Ergebnis außer 'db.tme_count.find ({" count ": {$ type: 16}}) 'gibt mir eine Liste von Dokumenten. Gründe dafür? – Anubhav
Auch '> typeof db.tme_count.findOne(). Count' gibt mir ' Nummer' – Anubhav