Esperti.MongoDB allowDiskUse non funziona ..
Sono nuovo di MongoDB, ma sanno abbastanza per ottenere la mia auto nei guai .. caso in questione:
db.test.aggregate(
[
{$group: {_id: {email: "$email", gender: "$gender"}, cnt: {$sum: 1}}},
{$group: {_id: "$_id.email", cnt: {$sum: 1}}},
{$match: {cnt: 2}}
],
{allowDiskUse : true}
)
e non importa ciò che le variazioni che cerco, io continuo a ricevere lo stesso errore ("Passo allowDiskUse: true di opt in "):
errore (" Stampa dello stack ") @: 0() @ src/mongo/shell/utils.js: 37 ([oggetto Array], [oggetto Object ]) @ src/mongo/shell/collection.js: 866 @ (shell): 7
eccezione non rilevata: aggregato non riuscito: {"errmsg": "eccezione: Errore ricevuto in risposta da mongo1.mscnet.com:27017: {$ err: \" Limite di memoria superato per $ gruppo, ma non consentito esterno ordinare. Passo allowDiskUse:. Vera di opt-in \ "il codice: 16945}", "codice": 16945, "ok": 0 }
FYI: Sto usando Mongo 2.6
Stai utilizzando una shell 2.6? Cosa restituisce 'version()' nella shell 'mongo'? Inoltre, stai usando estensioni della shell come Mongo-Hacker? In tal caso, proverei ad avviare la shell usando 'mongo --norc' per testare senza estensioni. La tua sintassi sembra corretta quindi sospetto che potresti inavvertitamente utilizzare una versione dell'helper 'aggregate()' che non supporta le opzioni di passaggio al comando di aggregazione (che sono state aggiunte nella shell di MongoDB 2.6). – Stennie
Sto usando "MongoDB versione shell: 2.6.5". Sebbene stavo usando un'app di terze parti chiamata RoboMongo (versione 0.8.4). Ora sto usando la shell CMD con --norc .. e sembra funzionare .. Suppongo che fosse il mio cliente. Ma puoi spiegarmi qualcosa per me? .. L'aggregazione non avviene sul mio PC (vero?). Non vedo alcun utilizzo di rete/CPU sul mio pc. Allora, qual è il "cliente" e come/perché ha effetto sul trattamento dei dati? Grazie! –
I client come la shell 'mongo' o Robomongo forniscono [' aggregatori() 'helper] (http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/) per rendere più conveniente il lavoro con il sottostante [comando 'aggregate'] (http://docs.mongodb.org/manual/reference/command/aggregate/) che gira sul tuo server MongoDB. Nelle versioni di MongoDB precedenti alla 2.6 il comando di aggregazione non supportava alcuna opzione, quindi le versioni precedenti degli helper 'aggregate()' ignoreranno quelle. Se '--norc' funziona per la shell' mongo', sospetto che tu abbia una versione precedente di Mongo-Hacker (ho commesso una correzione ad agosto 2014) – Stennie