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

MongoDBの配列フィールドで指定された要素のインデックスを取得しますか?


これには$indexOfArray演算子を使用できます。ドキュメントを使用してコレクションを作成しましょう-

>db.getIndexDemo.insertOne({"InstructorName":"Chris","InstructorSubject":["MongoDB","MySQL","Java","C++"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cbd5251de8cc557214c0df8")
}

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

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

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

{
   "_id" : ObjectId("5cbd5251de8cc557214c0df8"),
   "InstructorName" : "Chris",
   "InstructorSubject" : [
      "MongoDB",
      "MySQL",
      "Java",
      "C++"
   ]
}

以下は、MongoDBの配列フィールドで指定された要素のインデックスを取得するためのクエリです-

> db.getIndexDemo.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$InstructorSubject", "MongoDB" ] } } } ] );

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

{ "_id" : ObjectId("5cbd5251de8cc557214c0df8"), "matchedIndex" : 0 }

以下は、MongoDBの配列フィールドにある別の要素のインデックスを取得するためのクエリです-

> db.getIndexDemo.aggregate( [ { "$project": { "matchedIndex": { "$indexOfArray": [ "$InstructorSubject", "C++" ] } } } ] );

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

{ "_id" : ObjectId("5cbd5251de8cc557214c0df8"), "matchedIndex" : 3 }


注- ご存知のように、ほとんどの言語では、配列のインデックスは0から始まり、配列の最初の要素のインデックスは0になり、最後の要素のインデックスは(n-1)になります。ここで、nは配列の要素の数です。

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

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

  2. C ++で指定されたインデックス範囲[L– R]の配列要素を削除しますか?

    まず、元の配列と配列要素を削除するための排他的な範囲を定義し、元の配列の長さ-を見つけましょう。 int arr[] = { 2,4,6,8,10,12,14,16,18,20}; int L = 2, R = 6; int length = sizeof(arr) / sizeof(arr[0]); ここで、配列をループし、インデックス位置(i)がLまたはRより大きい場合、インデックス値(i)が範囲LとRの間にある場合、配列要素の位置をシフト(削除)するために使用される変数kをインクリメントします。 R.また、指定された配列の新しい長さはkになります。 int k = 0; for (in