Ich habe Daten in MongoDB im folgenden Format gespeichert.allowDiskUse funktioniert nicht in pymongo
{
"_id" : ObjectId("570b487fb5360dd1e5ef840c"),
"internal_id" : 1,
"created_at" : ISODate("2015-07-14T10:08:38.994Z"),
"updated_at" : ISODate("2016-01-10T00:35:19.748Z"),
"ad_account_id" : 1,
"updated_time" : "2013-08-05T04:48:49-0700",
"created_time" : "2013-08-05T04:46:35-0700",
"name" : "Sale1",
"daily": [
{"clicks": 5000, "date": "2015-04-16"},
{"clicks": 5100, "date": "2015-04-17"},
{"clicks": 5030, "date": "2015-04-20"}
]
"custom_tags" : {
"Event" : {
"name" : "Clicks"
},
"Objective" : {
"name" : "Sale"
},
"Image" : {
"name" : "43c3fe7b262cde5f476ed303e472c65a"
},
"Goal" : {
"name" : "10"
},
"Type" : {
"name" : "None"
},
"Call To Action" : {
"name" : "None",
},
"Landing Pages" : {
"name" : "www.google.com",
}
}
Ich versuche, zu gruppieren einzelne Dokumente durch internal_id
die Gesamtsumme von Klicks zu finden, von sagen wir 2015-04-15
-2015-04-21
die aggregate
Methode.
In pymongo, wenn ich versuche, ein aggregate
nur $project
auf internal_id
mit zu tun, erhalte ich die Ergebnisse, aber wenn ich zu $project
custom_tags
Feldern versuchen, erhalte ich folgende Fehlermeldung:
OperationFailure: Exceeded memory limit for $group, but didn't allow external sort.
Pass allowDiskUse:true to opt in.
die Antwort Nach here, änderte ich sogar meine Aggregatfunktion zu list(collection._get_collection().aggregate(mongo_query["pipeline"], allowDiskUse=True))
. Aber das wirft immer noch den früheren Fehler auf.