Sha*_*Ali 4 java mongodb mongodb-query
我有一个像
_id: ObjectId("568f93b5e0ce9f35377c723e")
rollNo: "123"
_id: ObjectId("568f93b5e0ce9f35377c723g")
rollNo: "111"
_id: ObjectId("568f93b5e0ce9f35377c723g")
rollNo: "123"
Run Code Online (Sandbox Code Playgroud)
我想查询并获取不同卷号的计数。例如,从我上面的收藏中,我应该得到计数为 2。而且我还想打印出现次数超过 1 的卷号,例如,从我上面的收藏中,应该打印 123 号卷。
我试过
db.student.aggregate([
{ "$group": {
"_id": "$rollNo",
"count": { "$sum": 1 }
}}
],function(err,result) {
});
Run Code Online (Sandbox Code Playgroud)
这将打印每个卷号,然后是其计数。我的收藏非常庞大,因此很难追踪。有没有其他更简单的方法可以实现这一目标?
为了获得不同字段的计数,您可以利用distinct 命令返回字段的不同值数组;您可以检查数组的长度以进行计数。
db.student.distinct("rollNo").length
Run Code Online (Sandbox Code Playgroud)
为了打印出现次数超过 1 的卷号,您可以在分组后利用$match运算符:
db.student.aggregate([
{"$group": {"_id": "$rollNo", "count": { "$sum": 1 }}},
{"$match": {count: {"$gt": 1}}}
])
Run Code Online (Sandbox Code Playgroud)