web-dev-qa-db-fra.com

compte plusieurs colonnes et résultats vrais seulement requête mongodb

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

1
Nesfe

Vous pouvez essayer ceci car la valeur de chaque champ est 0 ou 1.

db.collection.aggregate({$group: {_id: "$Search_Word", sql: {$sum: "$sql"}}});
0
mmontoya