MongoDBは入力要素から2番目の要素を集約しますか?
input要素から2番目の要素を集約するには、mapReduce()を使用します。 Map-reduceは、大量のデータを有用な集計結果に凝縮するためのデータ処理パラダイムです。ドキュメントを使用してコレクションを作成しましょう-
> db.demo621.insert({ _id: 101, Name1: "John", Name2: "John" }); WriteResult({ "nInserted" : 1 }) > db.demo621.insert({ _id: 102, Name1: "Bob", Name2: "John" }); WriteResult({ "nInserted" : 1 }) > db.demo621.insert({ _id: 103, Name1: "Chris", Name2: "John" }); WriteResult({ "nInserted" : 1 }) > db.demo621.insert({ _id: 104, Name1: "Sam", Name2: "John" }); WriteResult({ "nInserted" : 1 })>
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo621.find();
これにより、次の出力が生成されます-
{ "_id" : 101, "Name1" : "John", "Name2" : "John" } { "_id" : 102, "Name1" : "Bob", "Name2" : "John" } { "_id" : 103, "Name1" : "Chris", "Name2" : "John" } { "_id" : 104, "Name1" : "Sam", "Name2" : "John" }
以下は、入力要素から2番目の要素を集約するためのクエリです-
> db.demo621.mapReduce( ... function () { ... track++; ... var actualId= this._id; ... delete this._id; ... if ( track % div == 0 ) ... emit(actualId, this ); ... }, ... function() {}, ... { ... "scope": { "track": 0, "div": 2 }, ... "out": { "inline": 1 } ... } ... )
これにより、次の出力が生成されます-
{ "results" : [ { "_id" : 102, "value" : { "Name1" : "Bob", "Name2" : "John" } }, { "_id" : 104, "value" : { "Name1" : "Sam", "Name2" : "John" } } ], "timeMillis" : 48, "counts" : { "input" : 4, "emit" : 2, "reduce" : 0, "output" : 2 }, "ok" : 1 }
-
MongoDBアグリゲートで$redactを使用していますか?
$ redactは、ドキュメント自体に格納されている情報に基づいて、ドキュメントの内容を制限します。 $condを$redactと一緒にまとめて使用できます。ドキュメントを使用してコレクションを作成しましょう- > db.demo546.insertOne({"Value1":10,"Value2":20});{ "acknowledged" : true, "insertedId" : ObjectId("5e8e263f9e5f92834d7f05d7") }
-
MongoDB Aggregateを使用して、ドキュメントと配列要素の平均を取得しますか?
このために、$groupおよびaggregate()とともに$avgを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo598.insertOne( ... { ... Information:'Student', ... id:100, ... details:[ ... {Name:'Chris',Ma