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

MongoDBでサブドキュメントの配列をフィルタリングする方法は?


一致を適用する前に、aggregateを使用して配列リストをアンワインドできます。上記の概念を理解するために、ドキュメントを使用してコレクションを作成しましょう。ドキュメントを使用してコレクションを作成するためのクエリは次のとおりです。

> db.filterArray.insertOne( { "L": [{ "N":1 }, { "N":2 } , { "N":3 }, { "N":4 }, { "N":5 } ]});

上記のクエリを実行すると、次のように表示されます。

{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c6d63f2734e98fc0a434aeb")
}

find()メソッドを使用してコレクションからドキュメントを表示します。クエリは次のとおりです。

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

出力は次のとおりです。

{
   "_id" : ObjectId("5c6d63f2734e98fc0a434aeb"),
   "L" : [
      {
         "N" : 1
      },
      {
         "N" : 2
      },
      {
         "N" : 3
      },
      {
         "N" : 4
      },
      {
         "N" : 5
      }
   ]
}

これは、MongoDBを使用してサブドキュメント内の配列をフィルター処理するためのクエリです。 $ gtを使用して、3より大きいフィールドを取得しました。

> db.filterArray.aggregate({ $match:{_id:ObjectId("5c6d63f2734e98fc0a434aeb")}}, {
$unwind:'$L'}, {$match:{'L.N':{$gt:3}}},
{$group:{_id:'$_id',subDocument:{$push:'$L.N'}}}).pretty();

出力は次のとおりです。

{
   "_id" : ObjectId("5c6d63f2734e98fc0a434aeb"),
   "subDocument" : [
      4,
      5
   ]
}

  1. MongoDBの配列に基づいてドキュメントをフィルタリングする方法は?

    配列に基づいてドキュメントをフィルタリングするには、$elemMatchを使用します。 $ elemMatch演算子は、配列フィールドを含むドキュメントと一致します。 ドキュメントを使用してコレクションを作成しましょう- > db.demo453.insertOne( ... { _id: 101, details: [ { Name: "David", Marks: 60 }, { Name: "Mike", Marks: 55} ] } ... ) { "acknowledged" : true, "inserte

  2. MongoDBを使用して埋め込みドキュメントの配列でクエリをフィルタリングしますか?

    これには、MongoDBでaggregate()を使用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo736.insertOne( ...    { ...       "_id": "101", ...       "details1": [ ...          { ...             &q