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

MongoDBでMySQLUnionに似たクエリを実装しますか?


UNION 2つのコレクションと同様のクエリの場合、aggregate()とともにMongoDBのJOINを使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo486.insertOne({_id:1,"Amount":30,"No":4});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo486.insertOne({_id:2,"Amount":40,"No":2});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo486.insertOne({_id:3,"Amount":60,"No":6});
{ "acknowledged" : true, "insertedId" : 3 }

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo486.find();

これにより、次の出力が生成されます-

{ "_id" : 1, "Amount" : 30, "No" : 4 }
{ "_id" : 2, "Amount" : 40, "No" : 2 }
{ "_id" : 3, "Amount" : 60, "No" : 6 }

以下は、ドキュメントを使用して2番目のコレクションを作成するためのクエリです-

> db.demo487.insertOne({_id:1,"Price":10,"No":4});
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo487.insertOne({_id:2,"Price":80,"No":9});
{ "acknowledged" : true, "insertedId" : 2 }
> db.demo487.insertOne({_id:3,"Price":20,"No":6});
{ "acknowledged" : true, "insertedId" : 3 }

find()メソッドを使用してコレクションからすべてのドキュメントを表示する-

> db.demo487.find();

これにより、次の出力が生成されます-

{ "_id" : 1, "Price" : 10, "No" : 4 }
{ "_id" : 2, "Price" : 80, "No" : 9 }
{ "_id" : 3, "Price" : 20, "No" : 6 }

以下は、MongoDBのUNION2クエリへのクエリです-

> db.getCollection('demo486').aggregate([
... {$lookup : { from : "demo487",localField : "No", foreignField :"No", as:"demo487"}},
... {$unwind : "$demo487"},
... {
...    $group : {
...       _id : {
...          No :"$No",
...       },
...       TotalValue : { $sum : { $add: [ "$Amount", "$demo487.Price" ] }}
...    }
... },
... {$sort : {"_id.No":1}},
... {
...    $project : {
...       No :"$_id.No",
...       TotalValue : 1,
...       _id : 0
...    }
... }
... ])

これにより、次の出力が生成されます-

{ "TotalValue" : 40, "No" : 4 }
{ "TotalValue" : 80, "No" : 6 }

  1. MySQLユニオンクエリをカウントするにはどうすればよいですか?

    ユニオンをカウントするには、つまりUNIONの結果のカウントを取得するには、次の構文を使用します- SELECT COUNT(*) FROM ( SELECT yourColumName1 from yourTableName1 UNION SELECT yourColumName1 from yourTableName2 ) anyVariableName; 上記の構文を理解するために、いくつかのレコードを含む2つのテーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです- mysql> create table union_Table1 -> ( ->

  2. 同様の例を使用して、MySQLにWHEREINとORを実装します

    INはインデックスを使用しますが、ORはMySQLのインデックスを使用しません。 まずテーブルを作成しましょう- mysql> create table DemoTable711 (    Id int,    Name varchar(100) ); Query OK, 0 rows affected (0.92 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable711 values(100,'Chris'); Query OK, 1 r