在MongoDB中使用数组检索结果分组?

要使用数组检索按结果分组,请使用aggregate()。我们还将使用$addToSet运算符。除非该值已经存在,否则它将为数组添加一个值,在这种情况下,$addToSet对该数组不执行任何操作。

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

> db.demo498.insertOne({id:1,Name:["Chris"]});{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e86192b987b6e0e9d18f553")

}

> db.demo498.insertOne({id:2,Name:["David"]});{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e86192d987b6e0e9d18f554")

}

> db.demo498.insertOne({id:3,Name:["Chris"]});{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e861931987b6e0e9d18f555")

}

> db.demo498.insertOne({id:4,Name:["Bob"]});{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e861942987b6e0e9d18f556")

}

> db.demo498.insertOne({id:5,Name:["David"]});{

   "acknowledged" : true,

   "insertedId" : ObjectId("5e861947987b6e0e9d18f557")

}

find()方法的帮助下显示集合中的所有文档-

> db.demo498.find();

这将产生以下输出-

{ "_id" : ObjectId("5e86192b987b6e0e9d18f553"), "id" : 1, "Name" : [ "Chris" ] }

{ "_id" : ObjectId("5e86192d987b6e0e9d18f554"), "id" : 2, "Name" : [ "David" ] }

{ "_id" : ObjectId("5e861931987b6e0e9d18f555"), "id" : 3, "Name" : [ "Chris" ] }

{ "_id" : ObjectId("5e861942987b6e0e9d18f556"), "id" : 4, "Name" : [ "Bob" ] }

{ "_id" : ObjectId("5e861947987b6e0e9d18f557"), "id" : 5, "Name" : [ "David" ] }

以下是在MongoDB中使用数组检索按结果分组的查询-

> db.demo498.aggregate([{

...    $unwind : "$Name"

... }, {

...       $group : {

...          _id : $quot;$Name",

...          Id : {

...             $addToSet : "$id"

...          }

...       }

...    }

... ])

这将产生以下输出-

{ "_id" : "David", "Id" : [ 5, 2 ] }

{ "_id" : "Bob", "Id" : [ 4 ] }

{ "_id" : "Chris", "Id" : [ 3, 1 ] }

以上是 在MongoDB中使用数组检索结果分组? 的全部内容, 来源链接: utcz.com/z/343396.html

回到顶部