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

MongoDBのクエリフィールドを改善するにはどうすればよいですか?


MongoDBのクエリフィールドを改善するには、インデックスを使用する必要があります。ドキュメントを使用してコレクションを作成しましょう

> db.improveQueryDemo.insertOne(
... {
...    "PlayerDetails":[
...       {"PlayerName": "John", "PlayerGameScore": 5690},
...       {"PlayerName": "Carol", "PlayerGameScore": 2690},
...    ]
... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9dbaf875e2eeda1d5c3670")
}

以下は、find()メソッドを使用してコレクションからすべてのドキュメントを表示するためのクエリです

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

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

{
   "_id" : ObjectId("5c9dbaf875e2eeda1d5c3670"),
   "PlayerDetails" : [
      {
         "PlayerName" : "John",
         "PlayerGameScore" : 5690
      },
      {
         "PlayerName" : "Carol",
         "PlayerGameScore" : 2690
      }
   ]
}

次に、クエリを改善するためにフィールドにインデックスを作成する必要があります。以下はクエリです

> db.improveQueryDemo.ensureIndex({"PlayerDetails.PlayerName":1});

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

{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

これで、完全一致で検索できます。以下はクエリです

> db.improveQueryDemo.find({"PlayerDetails.PlayerName":"Carol"}).pretty();

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

{
   "_id" : ObjectId("5c9dbaf875e2eeda1d5c3670"),
   "PlayerDetails" : [
      {
         "PlayerName" : "John",
         "PlayerGameScore" : 5690
      },
      {
         "PlayerName" : "Carol",
         "PlayerGameScore" : 2690
      }
   ]
}

  1. MongoDBでオブジェクトのフィールド配列値をクエリしていますか?

    arrayFieldNameとvalueを使用して、オブジェクトのフィールド配列値をクエリします。ドキュメントを使用してコレクションを作成しましょう- > db.demo295.insertOne({"status":["Active","Inactive"]}); {    "acknowledged" : true,    "insertedId" : ObjectId("5e4d4ea65d93261e4bc9ea39")

  2. MongoDBコレクションの空のフィールドをチェックする方法は?

    MongoDBコレクションの空のフィールドを確認するには、$existsと$eq演算子を併用します。ドキュメントを使用してコレクションを作成しましょう- > db.demo485.insertOne({"FirstName":"Chris","LastName":""});{    "acknowledged" : true,    "insertedId" : ObjectId("5e82e9f6b0f3fa88e22