J'ai utilisé MySQL depuis que j'étais un jeune garçon et maintenant je dois passer à MongoDB pour diverses raisons. J'écris un journal qui enregistre toutes les erreurs PHP dans une collection MongoDB. La lecture des erreurs n'est pas le problème, en utilisant un simple find() est assez facile et c'est génial que vous puissiez utiliser les tableaux php pour accéder aux données.Chaînes PHP/MongoDB Count dans un tableau utilisant des agrégations
Maintenant, je veux avoir des statistiques sur les erreurs. Ma collection ressemble à ceci:
{
"_id": ObjectId("51af10ca0e5e723c0a000000"),
"Errors": {
"2048": {
"0": {
"Message": "Declaration of ADODB_mysqli::MetaIndexes() should be compatible with ADOConnection::MetaIndexes($table, $primary = false, $owner = false)",
"File": "File.php",
"Line": NumberInt(29),
"Time": NumberInt(1370427591)
}
},
"2": {
"0": {
"Message": "Error",
"File": "File.php",
"Line": NumberInt(29),
"Time": NumberInt(1370427591)
},
"1": {
"Message": "Error",
"File": "File.php",
"Line": NumberInt(29),
"Time": NumberInt(1370427591)
}
},
"8": {
"0": {
"Message": "Undefined index: PluginLastAdded",
"File": "File.php",
"Line": NumberInt(36),
"Time": NumberInt(1370427594)
},
"1": {
"Message": "Undefined index: PluginLastAdded",
"File": "File.php",
"Line": NumberInt(36),
"Time": NumberInt(1370427594)
}
}
}
}
Maintenant je veux savoir à quelle fréquence chaque erreur dans cette entrée apparaît. Ce serait bien d'avoir une liste séparée en 2048, 2, 8 et ensuite le compte de chaque erreur. Est-ce possible sans trop de code PHP mais en utilisant l'agrégation de MongoDB?
Toute aide serait géniale, MongoDB est à 180 ° différent de MySQL selon moi, et le switch est assez dur.
Un problème que je peux est votre schéma, vous ne pouvez pas facilement décompresser et agréger ce schéma, sauf avec une carte réduire. Je vous recommande personnellement de le changer afin que le code d'erreur ne soit pas la clé mais plutôt un champ dans le document – Sammaye
Merci, je vais essayer de cette façon. Peut-être que je peux venir à travers une solution maintenant. :) – Moe