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

MongoDBを使用して配列フィールドの特定の要素を投影するにはどうすればよいですか?


配列フィールドの特定の要素をプロジェクトするには、$projectを使用します。ドキュメントを使用してコレクションを作成しましょう-

>db.demo355.insertOne({"id":101,"details":[{"Name":"Chris",isMarried:1},{"Name":"David",isMarried:0},{"Name":"Mike",isMarried:1}]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e568928f8647eb59e5620c5")
}

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

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

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

{
   "_id" : ObjectId("5e568928f8647eb59e5620c5"),
   "id" : 101,
   "details" : [
      {
         "Name" : "Chris",
         "isMarried" : 1
      },
      {
         "Name" : "David",
         "isMarried" : 0
      },
      {
         "Name" : "Mike",
         "isMarried" : 1
      }
   ]
}

以下は、配列フィールド内のプロジェクト固有の要素へのクエリです-

> db.demo355.aggregate([
...    {
...       $project: {
...          details: {
...             $filter: {
...                input: "$details",
...                as: "out",
...                cond: { $eq:["$$out.isMarried",1] }
...             }
...          }
...       }
...    }
... ])

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

{
   "_id" : ObjectId("5e568928f8647eb59e5620c5"), "details" : [
      { "Name" : "Chris", "isMarried" : 1 },
      { "Name" : "Mike", "isMarried" : 1 }
   ] 
}

  1. 配列要素を使用してMongoDBで特定のドキュメントをフェッチします

    特定のドキュメントをフェッチするには、MongoDB find()でドット表記を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo672.insertOne({Brand:[{CategoryName:"Mobile","Name":"Oppo"}]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5ea3ea9b04263e90dac9

  2. MongoDBドキュメントの特定のフィールドから配列要素の数を取得しますか?

    特定のフィールドから配列要素をカウントするには、MongoDBで$sizeを使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo723.insertOne({"Subject":["MySQL","MongoDB"]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5eab094d43417811278f588a") } >