MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBの配列を使用して結果ごとにグループを取得しますか?


配列を使用してgroupbyの結果を取得するには、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の配列を使用してgroupbyの結果を取得するためのクエリです-

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

  1. MongoDBで各グループの最大アイテムを選択するにはどうすればよいですか?

    $groupを使用できます。ドキュメントを使用してコレクションを作成しましょう- > db.demo659.insertOne({Name:"Chris",CountryName:"US","Marks":50}); {    "acknowledged" : true,    "insertedId" : ObjectId("5ea1a50724113ea5458c7cf9") } > db.demo659.insertO

  2. MongoDB Aggregate groupの複数の結果?

    複数の結果を集約するには、MongoDBで$groupを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo765.insertOne( ... ...    { ...       Name:"John", ...       "Category":"ComputerScience", ...       "SubjectName":"MongoDB&quo