MongoDB 查詢來選擇各個不同的條目並計數?
讓我們建立一個帶有文件的集合 -
> db.demo586.insertOne(
... {"details": [
... {
... "Name":"Chris",
... "Marks":71
... },
... {
... "Name":"Chris",
... "Marks":61
... },
... {
... "Name":"David",
... "Marks":81
... }
...
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9200fefd2d90c177b5bcc7")
}
> db.demo586.insertOne(
... {"details": [
... {
... "Name":"Chris",
... "Marks":71
... },
... {
... "Name":"Carol",
... "Marks":61
... },
... {
... "Name":"David",
... "Marks":81
... }
...
... ]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9200fefd2d90c177b5bcc8")
}在集合中顯示所有文件,方法是使用 find() 方法 -
> db.demo586.find();
這將產生以下輸出 -
{ "_id" : ObjectId("5e9200fefd2d90c177b5bcc7"), "details" : [
{ "Name" : "Chris", "Marks" : 71 },
{ "Name" : "Chris", "Marks" : 61 },
{ "Name" : "David", "Marks" : 81 }
] }
{ "_id" : ObjectId("5e9200fefd2d90c177b5bcc8"), "details" : [
{ "Name" : "Chris", "Marks" : 71 },
{ "Name" : "Carol", "Marks" : 61 },
{ "Name" : "David", "Marks" : 81 }
] }以下查詢用於選擇並計數不同項 -
> var q= [
... { "$unwind": "$details" },
... {
... "$group": {
... "_id": {
... "Name": "$details.Name",
... "Marks": "$details.Marks"
... },
... "count": { "$sum": 1 }
... }
... },
... {
... "$group": {
... "_id": "$_id.Name",
... "distinctV": {
... "$addToSet": {
... "value": "$_id.Marks",
... "numberOfValues": "$count"
... }
... }
... }
... },
... {
... "$project": {
... "_id": 0,
... "Name": "$_id",
... "distinctV": 1
... }
... }
... ];
> db.demo586.aggregate(q);這將產生以下輸出 -
{ "distinctV" : [ { "value" : 61, "numberOfValues" : 1 } ], "Name" : "Carol" }
{ "distinctV" : [ { "value" : 71, "numberOfValues" : 2 }, { "value" : 61, "numberOfValues" : 1 } ], "Name" : "Chris" }
{ "distinctV" : [ { "value" : 81, "numberOfValues" : 2 } ], "Name" : "David" }
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP