Computer >> Máy Tính >  >> Lập trình >> MongoDB

Tôi có thể truy vấn trên chỉ mục MongoDB nếu truy vấn của tôi chứa toán tử $ hoặc không?

Đúng, bạn có thể làm điều đó. Đầu tiên, bạn cần tạo một chỉ mục và sau đó sử dụng giải thích (). Đầu tiên chúng ta hãy tạo một chỉ mục MongoDB. Sau đây là truy vấn:

> db.indexOrQueryDemo.ensureIndex({"First":1});

Điều này sẽ tạo ra kết quả sau

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

Truy vấn để tạo chỉ mục thứ hai như sau

> db.indexOrQueryDemo.ensureIndex({"Second":1});

Điều này sẽ tạo ra kết quả sau

{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 3,
   "numIndexesAfter" : 4,
   "ok" : 1
}

Sau đây là truy vấn cho $ hoặc toán tử với các chỉ mục. Chúng tôi cũng đã sử dụng giải thích () ở đây

> db.indexOrQueryDemo.find({$or:[{First:1}, {Second:2}]}).explain();

Điều này sẽ tạo ra kết quả sau

{
   "queryPlanner" : {
      "plannerVersion" : 1,
      "namespace" : "test.indexOrQueryDemo",
      "indexFilterSet" : false,
      "parsedQuery" : {
         "$or" : [
            {
               "First" : {
                  "$eq" : 1
               }
            },
            {
               "Second" : {
                  "$eq" : 2
               }
            }
         ]
      },
      "winningPlan" : {
         "stage" : "SUBPLAN",
         "inputStage" : {
            "stage" : "FETCH",
            "inputStage" : {
               "stage" : "OR",
               "inputStages" : [
                  {
                     "stage" : "IXSCAN",
                     "keyPattern" : {
                           "First" : 1
                     },
                     "indexName" : "First_1",
                     "isMultiKey" : false,
                     "multiKeyPaths" : {
                        "First" : [ ]
                     },
                     "isUnique" : false,
                     "isSparse" : false,
                     "isPartial" : false,
                     "indexVersion" : 2,
                     "direction" : "forward",
                     "indexBounds" : {
                        "First" : [
                           "[1.0, 1.0]"
                        ]
                     }
                  },
                  {
                     "stage" : "IXSCAN",
                     "keyPattern" : {
                        "Second" : 1
                     },
                     "indexName" : "Second_1",
                     "isMultiKey" : false,
                     "multiKeyPaths" : {
                        "Second" : [ ]
                     },
                     "isUnique" : false,
                     "isSparse" : false,
                     "isPartial" : false,
                     "indexVersion" : 2,
                     "direction" : "forward",
                     "indexBounds" : {
                        "Second" : [
                           "[2.0, 2.0]"
                        ]
                     }
                  }
               ]
            }
         }
      },
      "rejectedPlans" : [ ]
   },
   "serverInfo" : {
      "host" : "DESKTOP-QN2RB3H",
      "port" : 27017,
      "version" : "4.0.5",
      "gitVersion" : "3739429dd92b92d1b0ab120911a23d50bf03c412"
   },
   "ok" : 1
}