Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mongodb的$facet返回完整排序的文档,而不是基于匹配的计数_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

mongodb的$facet返回完整排序的文档,而不是基于匹配的计数

mongodb的$facet返回完整排序的文档,而不是基于匹配的计数,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有一个文件如下 { _id:1234, userId:90oi, tag:"self" }, { _id:5678, userId:65yd, tag:"other" }, { _id:9012, userId:78hy, tag:"something" }, { _id:3456, userId:60oy, tag:"self" }, 我需要下面这样的回答 [{ tag : "self", c

我有一个文件如下

{
    _id:1234,
    userId:90oi,
    tag:"self"
},
{
    _id:5678,
    userId:65yd,
    tag:"other"
},
{
    _id:9012,
    userId:78hy,
    tag:"something"
},
{
    _id:3456,
    userId:60oy,
    tag:"self"
},
我需要下面这样的回答

[{

tag : "self",
count : 2
},
{
tag : "something",
count : 1
},
{
tag : "other",
count : 1
}
]
我使用$facet查询文档。但它返回的是全部文件,而不是计数。我的问题如下

db.data.aggregate({
    $facet: {
        categorizedByGrade : [
            { $match: {userId:ObjectId(userId)}},
            {$sortByCount: "$tag"}
        ]
    }
})

让我知道我做错了什么。提前感谢您的帮助

,因此您不需要使用
$facet
,因为这一方面是当您确实需要在一个聚合查询()中处理多个聚合管道时,请尝试以下操作:

db.yourCollectionName.aggregate([{$project :{tag :1, _id :0}},{$group :{_id: '$tag',
count: { $sum: 1 }}}, {$project : {tag : '$_id', _id:0, count :1}}])
说明:

$project
第一点是在所有文档中只保留所需的字段,这样我们就可以处理更少的数据,
$group
将迭代所有文档,将相似的数据分组到指定的字段上,而
$sum
将计算通过每个集合中的分组阶段添加的相应项目数,最后,
$project
再次用于使结果看起来像我们所需要的