重複するIDに基づいてMongoDBの評価平均を取得するにはどうすればよいですか?
MongoDBの平均では、$avgを使用します。ドキュメントを使用してコレクションを作成しましょう。ここでは、それぞれの評価が付いた重複IDがあります-
> db.demo606.insertOne({id:1,rating:5});{ "acknowledged" : true, "insertedId" : ObjectId("5e972dfbf57d0dc0b182d623") } > db.demo606.insertOne({id:1,rating:4});{ "acknowledged" : true, "insertedId" : ObjectId("5e972dfef57d0dc0b182d624") } > db.demo606.insertOne({id:2,rating:3});{ "acknowledged" : true, "insertedId" : ObjectId("5e972e09f57d0dc0b182d625") } > db.demo606.insertOne({id:1,rating:null});{ "acknowledged" : true, "insertedId" : ObjectId("5e972e0ef57d0dc0b182d626") } > db.demo606.insertOne({id:2,rating:null});{ "acknowledged" : true, "insertedId" : ObjectId("5e972e15f57d0dc0b182d627") } > db.demo606.insertOne({id:2,rating:3});{ "acknowledged" : true, "insertedId" : ObjectId("5e972e1bf57d0dc0b182d628") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo606.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e972dfbf57d0dc0b182d623"), "id" : 1, "rating" : 5 } { "_id" : ObjectId("5e972dfef57d0dc0b182d624"), "id" : 1, "rating" : 4 } { "_id" : ObjectId("5e972e09f57d0dc0b182d625"), "id" : 2, "rating" : 3 } { "_id" : ObjectId("5e972e0ef57d0dc0b182d626"), "id" : 1, "rating" : null } { "_id" : ObjectId("5e972e15f57d0dc0b182d627"), "id" : 2, "rating" : null } { "_id" : ObjectId("5e972e1bf57d0dc0b182d628"), "id" : 2, "rating" : 3 }>
以下は、重複するIDに基づいて評価の平均を取得するためのクエリです-
> db.demo606.aggregate( ... [ ... { "$group": { ... "_id": "$id", ... "AverageRating": { "$avg": { "$ifNull": ["$rating",0 ] } } ... }} ... ] ... );
これにより、次の出力が生成されます-
{ "_id" : 2, "AverageRating" : 2 } { "_id" : 1, "AverageRating" : 3 }
-
MongoDBの配列に基づいてドキュメントをフィルタリングする方法は?
配列に基づいてドキュメントをフィルタリングするには、$elemMatchを使用します。 $ elemMatch演算子は、配列フィールドを含むドキュメントと一致します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo453.insertOne( ... { _id: 101, details: [ { Name: "David", Marks: 60 }, { Name: "Mike", Marks: 55} ] } ... ) { "acknowledged" : true, "inserte
-
MongoDBで配列交差のデータを取得するにはどうすればよいですか?
MongoDBでの配列の相互作用については、aggregate()で$setIntersectionを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo625.insertOne( ... { ... Name: "John", ... Marks: [56,98,60] ... } ... ); { "acknowledged" : true, &nbs