db.school.find({ "merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3" })
这是来自该查询的学校集合的示例文档:
{
"_id" : ObjectId("57fafasf2323232323232f57682cd42"),
"status" : "wait",
"merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3",
"isValid" : false,
"fields" : { "schoolid" : {
"value" : "2323232",
"detail" : {
"revisedBy" : "teacher",
"revisionDate" : ISODate("2015-06-24T09:22:44.288+0000")
},
"history" : [
]
}}
}
我想看看哪个有学生。所以我这样做:
db.school.aggregate([
{$match:{ "merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3"
{ $group: {
_id: { fields.schoolid.value: "$fields.schoolid.value" },
count: { $sum: 1 }
} },
{ $match: {
count: { $gte: 2 }
} },
{ $sort : { count : -1} },
{ $limit : 10 }
]);
但它会出错。
许多行存在很多错误
我试着这样做
_id: { "fields.schoolid.value": "$fields.schoolid.value" },
或 _id:{'fields.schoolid.value':“$'fields.schoolid.value'”},
但没有奏效。我可以使用它吗?
答案 0 :(得分:1)
根据您提供的文档,没有fields
字段,因此小组阶段无法运行。您的查询应该是:
db.school.aggregate([
{ $match: { "merchant" : "cc8c0421-e7fc-464d-9e1d-37e168b216c3"}},
{ $group: {
_id: { value: "$fields.schoolid.value" },
count: { $sum: 1 }
} },
{ $match: {
count: { $gte: 2 }
} },
{ $sort : { count : -1} },
{ $limit : 10 }
]);
另请注意,fields.schoolid.value
不是有效的字段名称,您需要在“”中将其包围或删除“。”