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

オブジェクトの一部のフィールドをフィルタリングし、MongoDBで特定のサブジェクト名の値をフェッチするにはどうすればよいですか?


フィルタリングとフェッチを行うには、MongoDB$filterと$matchとともに射影を使用します。ドキュメントを使用してコレクションを作成しましょう-

> db.demo507.insertOne(
... {
...
...    "Information":
...    [
...       {"Name":"John","SubjectName":"MySQL"},
...       {"Name":"Bob","SubjectName":"MongoDB"},
...       {"Name":"Chris","SubjectName":"MySQL"},
...       {"Name":"David","SubjectName":"C++"}
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8836d3987b6e0e9d18f577")
}

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

> db.demo507.find().pretty();

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

{
   "_id" : ObjectId("5e8836d3987b6e0e9d18f577"),
   "Information" : [
      {
         "Name" : "John",
         "SubjectName" : "MySQL"
      },
      {
         "Name" : "Bob",
         "SubjectName" : "MongoDB"
      },
      {
         "Name" : "Chris",
         "SubjectName" : "MySQL"
      },
      {
         "Name" : "David",
         "SubjectName" : "C++"
      }
   ]
}

以下は、オブジェクトの一部のフィールドをフィルタリングするためのクエリです-

> db.demo507.aggregate([
...    {$match: {"Information.SubjectName" : "MySQL" } },
...    {$project: {
...       _id:0,
...       Information: {
...          $filter: {
...             input: '$Information',
...             as: 'result',
...             cond: {$eq: ['$$result.SubjectName', 'MySQL']}
...          }
...       }
...    }
... },{$project: {Information: { SubjectName:1}}}
... ]);

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

{ "Information" : [ { "SubjectName" : "MySQL" }, { "SubjectName" : "MySQL" } ] }

  1. MongoDBで配列をクエリして、特定の値をフェッチします

    配列から特定の値をフェッチするには、$ projectとともにaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo761.insertOne( ...    { ...       "details": [ ...          { ...             "student": { ...     &nb

  2. MySQLで特定の列の値(名前)を取得する

    特定の列値をフェッチするには、LIKE句を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1809      (      Name varchar(20)      ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable1809 values('John'); Query