用 MongoDB 查询来选择 distinct 和 count?

让我们创建一个包含文档的集合-

> 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" }

以上是 用 MongoDB 查询来选择 distinct 和 count? 的全部内容, 来源链接: utcz.com/z/317179.html

回到顶部