1
在我MongoDB的,我“由组”,试图一组使用骨料()功能记录和$比赛查询我使用不会选择管道中的记录。
我的数据集有子文件(关于这一点我将$匹配),它看起来像这样:
{
"_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 }
}
}
])
上面的查询不返回任何结果,因为$匹配不把任何结果进入管道。如果我修改这样的查询:
db.tasks.aggregate([
{
$match : {
user : { id : "abcd1123", name : "username" }
}
},
{
$group: {
_id: "$status",
count: { $sum: 1 }
}
}
])
它的工作原理。但我没有用户名作为输入,我只需要根据用户标识查找。
由于用户不是阵列,我不能使用$ unwind就可以了。
我该如何实现这个目标?
真棒。谢谢Yogesh。它非常完美! – Vijendran 2015-04-06 12:46:50