集約パイプラインを使用してMongoDBのレコードをフェッチする
MongoDBアグリゲーションパイプラインにはステージがあります。各ステージは、ドキュメントがパイプラインを通過するときにドキュメントを変換します。
まず、ドキュメントを使用してコレクションを作成しましょう-
> db.demo218.insertOne({"Name":"Chris","Branch":"CS",Marks:[65,78,36,90]}); { "acknowledged" : true, "insertedId" : ObjectId("5e3e5f4903d395bdc2134712") } > db.demo218.insertOne({"Name":"David","Branch":"ME",Marks:[56,45,42,51]}); { "acknowledged" : true, "insertedId" : ObjectId("5e3e5f6203d395bdc2134713") } > db.demo218.insertOne({"Name":"Chris","Branch":"CS",Marks:[78,65,89]}); { "acknowledged" : true, "insertedId" : ObjectId("5e3e5f6c03d395bdc2134714") }
find()メソッドを使用してコレクションからすべてのドキュメントを表示する-
> db.demo218.find();
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e3e5f4903d395bdc2134712"), "Name" : "Chris", "Branch" : "CS", "Marks" : [ 65, 78, 36, 90 ] } { "_id" : ObjectId("5e3e5f6203d395bdc2134713"), "Name" : "David", "Branch" : "ME", "Marks" : [ 56, 45, 42, 51 ] } { "_id" : ObjectId("5e3e5f6c03d395bdc2134714"), "Name" : "Chris", "Branch" : "CS", "Marks" : [ 78, 65, 89 ] }
以下は、集約パイプラインのクエリです-
> db.demo218.aggregate([ ... { "$unwind": "$Marks" }, ... { "$match": ... { ... "Branch": "CS", ... "Marks": { "$gt": 88 } ... } ... }, ... { "$group": ... { ... "_id": "$_id", ... "Branch": { "$first": "$Branch" }, ... "Marks": { "$first": "$Marks" } ... } ... } ...])
これにより、次の出力が生成されます-
{ "_id" : ObjectId("5e3e5f6c03d395bdc2134714"), "Branch" : "CS", "Marks" : 89 } { "_id" : ObjectId("5e3e5f4903d395bdc2134712"), "Branch" : "CS", "Marks" : 90 }
-
MongoDBの集約と投影?
このために、aggregate()と一緒に$projectを使用します。集約された$projectは、要求されたフィールドを持つドキュメントをパイプラインの次のステージに渡します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo762.insertOne({ ... "_id" : { ... "userId":101, ... "userName":"Chris" ...
-
MySQL IN()を使用してLastNameに基づいてレコードをフェッチします
まずテーブルを作成しましょう- mysql> create table DemoTable ( FirstName varchar(100), LastName varchar(100) ); Query OK, 0 rows affected (0.83 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('Adam','Smith'); Query OK, 1 row affected (0.17