我在MongoDB中有一组对象。该对象包括类型数组。现在,我用Mongoose连接到数据库,现在想知道每种Type的对象数。
例如,我的对象看起来像
{
"name": "abc",
"tags": ["a","b","c"]
}
现在,我想获取例如带有标签“ a”的对象的总数
我正在使用Mongoose通过NodeJS后端连接到MongoDB
感谢您提出有效查询的想法。
添加: 如果我不知道不同对象中存在哪种不同的标签,并且想获得所有标签的概述,我该如何查询该标签?为了更好地理解,我举一个例子。 数据库中的两个对象:
{
"name": "abc",
"tags": ["a","b","c"]
},
{
"name": "abc",
"tags": ["a","b"]
}
函数/查询应该给出类似这样的响应:
{
"a": 2,
"b": 2,
"c": 1
}
答案 0 :(得分: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
}
答案 1 :(得分:0)
使用count
这是一种收集方法。它仅返回计数,而不是所有文档。如果您需要这些文档,请将count
替换为find
collection.count({tags:"a"})