Проверьте, равна ли длина элемента в массиве общему количеству элементов в массиве. - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть переменная массива var arrays=[]; В этой переменной arrays, values - это массив

arrays = [
    { 
        _id: 1,
        values: [
           { checked: true },
           { checked: false },
           { checked: true }
        ]
    }
]

Я хочу получить значения, где проверенная переменная истинна в переменной arrays:

db.getCollection('details').aggregate([
    { "$unwind": "$arrays" }, 
    { "$group": { 
        "_id": { 
            "istrue": {"$arrays.values"}
        }, 
        "count": { "$sum": 1 } 
    }
    }
])

Я пробовал это, но не работало

1 Ответ

0 голосов
/ 27 сентября 2018

Первая часть вашей агрегации в порядке, и вам нужно снова раскрутить по «значениям», если вы хотите считать каждое проверенное состояние.

db.getCollection('details').aggregate([
    { "$unwind": "$arrays" },
    { "$unwind": "$arrays.values" }, //add this line to make sure you consider every occurences
    { "$group": { 
        "_id": { 
            "istrue": {"$arrays.values"}
        }, 
        "count": { "$sum": 1 } 
    }
    }
])
...