获取 MongoDB 对象数组中每个元素的总数

Get Total numbers of each element in Array of MongoDB Object

我在 MongoDB 中有一组对象。该对象包括一个类型数组。现在我正在使用 Mongoose 连接到数据库,现在想知道每种类型的对象数量。

例如我的对象看起来像

{
"name": "abc",
"tags": ["a","b","c"]
}

现在我想获得例如具有标签 "a"

的对象总数

我正在使用 Mongoose

通过 NodeJS 后端连接到 MongoDB

感谢您提供有关如何有效查询的想法。

加法: 如果我不知道不同对象中存在什么样的不同标签并且我想获得所有标签的概览,我需要如何查询这个标签?为了更好的理解,我举个例子。 数据库中的两个对象:

{
"name": "abc",
"tags": ["a","b","c"]
},
{
"name": "abc",
"tags": ["a","b"]
}

function/query 应该给出这样的响应:

{
"a": 2,
"b": 2,
"c": 1
}
collection.aggregate([
    {$unwind: "$tags" },
    {$group: {
        _id: "$tags",  
        count: {$sum : 1}  
    }},

]);

这将给出如下输出:

/* 1 */
{
    "_id" : "c",
    "count" : 2
}

/* 2 */
{
    "_id" : "b",
    "count" : 3
}

/* 3 */
{
    "_id" : "a",
    "count" : 2
}

使用count,这是一种收集方式。它 returns 仅计数而不是所有文件。如果您需要文件,请将 count 替换为 find

collection.count({tags:"a"})