MongoDBドキュメントを集計して昇順で並べ替えますか?
MongoDBアグリゲーションで$sortを使用します。ドキュメントを使用してコレクションを作成しましょう-
> db.demo652.insertOne({
... value:10,
... "details" : [{
... "ProductName" : "Product-1",
... "ProductQuantity" : 8,
... "ProductPrice" : 500
... }, {
... "ProductName" : "Product-2",
... "ProductQuantity" : 7,
... "ProductPrice" : 500
...
... }]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9f0730e3c3cd0dcff36a62")
}
>
> db.demo652.insertOne({
... value:5,
... "details" : [{
... "ProductName" : "Product-1",
... "ProductQuantity" : 8,
... "ProductPrice" : 500
... }, {
... "ProductName" : "Product-2",
... "ProductQuantity" : 7,
... "ProductPrice" : 500
...
... }]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9f0740e3c3cd0dcff36a63")
} find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo652.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e9f0730e3c3cd0dcff36a62"), "value" : 10, "details" : [ { "ProductName" : "Product-1", "ProductQuantity" : 8, "ProductPrice" : 500 }, { "ProductName" : "Product-2", "ProductQuantity" : 7, "ProductPrice" : 500 } ] }
{ "_id" : ObjectId("5e9f0740e3c3cd0dcff36a63"), "value" : 5, "details" : [ { "ProductName" : "Product-1", "ProductQuantity" : 8, "ProductPrice" : 500 }, { "ProductName" : "Product-2", "ProductQuantity" : 7, "ProductPrice" : 500 } ] }> 以下は昇順でソートするためのクエリです-
> db.demo652.aggregate([{
... "$unwind": "$details"
... }, {
... "$match": {}
... }, {
... "$group": {
... "ProductPrice": {
... "$first": "$value"
... },
... "details": {
... "$push": {
... "ProductName": "$details.ProductName"
... }
... },
... "_id": "$_id"
... }
... }, {
... "$sort": {
... "ProductPrice": 1
... }
... }, {
... "$project": {
... "_id": 0,
... "ProductPrice": 1,
... "details": 1
... }
... }]).pretty() これにより、次の出力が生成されます-
{
"ProductPrice" : 5,
"details" : [
{
"ProductName" : "Product-1"
},
{
"ProductName" : "Product-2"
}
]
}
{
"ProductPrice" : 10,
"details" : [
{
"ProductName" : "Product-1"
},
{
"ProductName" : "Product-2"
}
]
} -
異なるドキュメント内の同様のIDを持つ要素のMongoDB集約?
このようなドキュメントのグループ化には、MongoDBaggregate()で$groupを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo602.insertOne({id:1,Name:"Chris"});{ "acknowledged" : true, "insertedId" : ObjectId("5e960080ed011c280a0905c9") } > db.demo602.insertOne({id:2,Name:"
-
MongoDB集計で複数のフィールドでカウント
複数のフィールドでカウントするには、MongoDBで$facetを使用します。 $ facetは、同じ入力ドキュメントのセットの単一ステージ内で複数の集約パイプラインを処理します。ドキュメントを使用してコレクションを作成しましょう- > db.demo721.insertOne( ... { ... ... "details1": { ... "id":101 ... ...