посчитать несколько столбцов и только истинные результаты mongodb запрос - PullRequest
0 голосов
/ 03 декабря 2018

Я новичок в mongodb, и я пытался это выяснить, но пока нет.Я думаю, что я рядом.У меня есть записи, подобные этой.

{
    "_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
}

Я пытаюсь создать группы по поисковому слову и посчитать 1 во всех других значениях.Я никогда не использовал mongodb раньше.

Конечный результат будет выглядеть следующим образом

job01, sql : 100, hive: 205, etc...
job02, sql : 121, hive 10, etc...

В Python это буквально так:

skill_data = df.groupby (by = 'Search_word').sum ()

Я пытался сделать что-то подобное, просто чтобы получить счетчик sql, где он равен 1

db.data_final.aggregate ({"$ group":
{_id: {Search_word: "$ Search_word", sql: {"$ eq": ["$ sql", 1]}}, количество: {$ sum: 1}}})

но это дает мне 2 счета один для ложного, где sql не равен 1 и счет, который я хочу для sql, который равен 1. Как я могу избавиться от ложного?Вот что я получаю сейчас:

{"_id": {"Search_word": "job01", "sql": true}, "count": 124} // это то, что я хочутолько и сделайте это для всех других значений в одном запросе

{"_id": {"Search_word": "job01", "sql": false}, "count": 279}

Любая помощь приветствуется

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете попробовать это, поскольку значение каждого поля равно 0 или 1.

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