Je suis nouveau sur mongodb et j'ai essayé de comprendre cela, mais je ne l'ai pas encore fait. Je pense que je suis proche. J'ai des disques similaires à celui-ci.
{
"_id" : ObjectId("5bfdf4385a37e507cff0ff62"),
"Search_Word" : "job01",
"hadoop" : 0,
"Hive" : 0,
"javascript" : 0,
"mongodb" : 0,
"sql" : 1,
"Java" : 0,
"sas" : 0,
"powerbi" : 0,
"python" : 1,
"pig" : 0,
"scala" : 0
}
J'essaie de créer des groupes en effectuant une recherche dans Word et de compter les 1 dans toutes les autres valeurs. Je n'ai jamais utilisé mongodb auparavant.
Le résultat final ressemblerait à ceci
job01, sql : 100, Hive: 205, etc...
job02, sql : 121, Hive 10, etc...
En python, c'est littéralement comme ça
skill_data = df.groupby (by = 'Search_Word'). sum ()
J'ai essayé de faire quelque chose comme ça juste pour obtenir le nombre de SQL où il est 1
db.data_final.aggregate ( {"$ group":
{_id: {Search_Word: "$ Search_Word", sql: {"$ eq": ["$ sql", 1]}}, compte: {$ sum: 1}}})
mais il me donne 2 comptes un pour faux où sql n'est pas égal à 1 et un nombre que je veux pour sql égal à 1. comment puis-je me débarrasser du faux? C'est ce que je reçois maintenant:
{"_id": {"Search_Word": "job01", "sql": true}, "count": 124} // c'est ce que je veux seulement et le fais pour toutes les autres valeurs d'une requête.
{"_id": {"Search_Word": "job01", "sql": false}, "count": 279}
Toute aide est appréciée
Vous pouvez essayer ceci car la valeur de chaque champ est 0 ou 1.
db.collection.aggregate({$group: {_id: "$Search_Word", sql: {$sum: "$sql"}}});