MongoDB $ match不适用于子文档的一部分

维詹德兰

在我的MongoDB中,我试图使用aggregate()函数对一组记录进行分组”,并且我使用$ match查询不会选择管道中的记录。

我的数据集有一些子文档(在上面应用了$ match),它看起来像这样:

{
    "_id" : ObjectId("550994e21cba9597624195aa"),
    "taskName" : "task name",
    "taskDetail" : "task detail.",
    "scheduledStartDate" : ISODate("2015-04-06T09:00:00.000Z"),
    "scheduledEndDate" : ISODate("2015-04-06T11:00:00.000Z"),
    "user" : {
        "id" : "abcd1123",
        "name" : "username"
    },
    "status" : "Assigned"
}
{
    "_id" : ObjectId("550994e21cba9597624195aa"),
    "taskName" : "task name",
    "taskDetail" : "task detail.",
    "scheduledStartDate" : ISODate("2015-04-06T09:00:00.000Z"),
    "scheduledEndDate" : ISODate("2015-04-06T11:00:00.000Z"),
    "user" : {
        "id" : "abcd1123",
        "name" : "username"
    },
    "status" : "Assigned"
}
{
    "_id" : ObjectId("550994e21cba9597624195aa"),
    "taskName" : "task name",
    "taskDetail" : "task detail.",
    "scheduledStartDate" : ISODate("2015-04-06T09:00:00.000Z"),
    "scheduledEndDate" : ISODate("2015-04-06T11:00:00.000Z"),
    "user" : {
        "id" : "abcd1124",
        "name" : "username"
    },
    "status" : "Assigned"
}

我想找出按状态类型分组的特定用户的状态计数。对于用户“ abcd1123”,我使用的查询是:

db.tasks.aggregate( [
   {
       $match : {
           user : { id : "abcd1123" } 
       }
   },
   {
       $group: {
          _id: "$status",
          count: { $sum: 1 }
       }
   }
] )

上面的查询不返回任何结果,因为$ match不会将任何结果放入管道中。如果我这样修改查询:

db.tasks.aggregate( [
   {
       $match : {
           user : { id : "abcd1123", name : "username" } 
       }
   },
   {
       $group: {
          _id: "$status",
          count: { $sum: 1 }
       }
   }
] )

有用。但是我没有用户名作为输入,我只需要根据用户ID查找即可。

由于用户不是数组,因此无法在其上使用$ unwind

我如何做到这一点?

约格什

您太接近了,只能按以下方式更改汇总查询

db.collectionName.aggregate({
    "$match": {
    "user.id": "abcd1123"
    }
},
{
    "$group": {
    "_id": "$status",
    "count": {
        "$sum": 1
    }
    }
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

mgo,mongodb:查找一个嵌入式文档,该文档是数组的一部分

Mongodb $ lookup不适用于_id

TypeORM FindById不适用于MongoDB

在MongoDB中将$ addFields用作更新功能的一部分

Mongodb-如何仅获取文档的一部分

mongodb匹配数组中的一项作为聚合管道的一部分

for循环,拆分字符串,将字符串的一部分保存到新列表,IndexError:列表索引超出范围-适用于字符串的一部分,而不适用于另一部分

DigiCert证书不适用于MongoDB

删除数组mongodb的一部分

MongoDB项目数组元素的一部分

如何更新mongodb文档字符串的一部分?

如何使用Node.js在MongoDB中获取文档的一部分?

CSS代码仅适用于一部分,而不适用于其他部分

mongodb objectid的一部分很可能是唯一的

MySQL-WHERE语句仅适用于SELECT语句的一部分

流星,MongoDB通过订阅获得数组的一部分

我如何迭代从Mongodb返回的arrayList作为结果的一部分?

Node.js,MongoDB-猫鼬-计算平均值作为GEO搜索的一部分

索引错误-适用于我的代码的一部分,而不适用于另一部分

有没有办法在MongoDB中返回文档中数组的一部分?

MongoDB查找字段是较长字符串的一部分

MongoDB /节点:将集合中的一部分文档插入另一个集合中的文档

Mongodb 投影不适用于 Java

MongoDB - $setIsSubset 运算符不适用于 $match 阶段

Mongodb:使用排序键作为复合索引的一部分还是在它自己的索引中?

php 使用 get 值的问题。适用于页面的一部分但不适用于另一部分

如何将行转换为列但仅适用于python中表的一部分?

MongoDB 部分索引不适用于 $elemMatch

mongodb 如何只找到数组的一部分