如何在 MongoDB 中建立巢狀索引?


在 MongoDB 中建立巢狀索引,可以使用 createIndex() 或 ensureIndex()。語法如下 -

db.yourCollectionName.createIndex({"yourOuterFieldName.yourInnerFieldName.yourSecondInnerFieldName": 1});

為了理解語法,讓我們使用文件來建立一個集合。建立帶文件集合的查詢如下 -

> db.nestedIndexDemo.insertOne(
   ... {
      ...
      ... "CustomerId":101,
      ... "CustomerDetails":
      ... {
         ... "CustomerListDetails":
         ... {
            ... "CustomerName":"Larry",
            ... "CustomerProjectName": "Project-1",
            ... "CustomerCountryName":"US"
         ... }
      ... }
   ... }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c8fc565d3c9d04998abf010")
}

使用 find() 方法來顯示集合中的所有文件。查詢如下 -

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

輸出如下 -

{
   "_id" : ObjectId("5c8fc565d3c9d04998abf010"),
   "CustomerId" : 101,
   "CustomerDetails" : {
      "CustomerListDetails" : {
         "CustomerName" : "Larry",
         "CustomerProjectName" : "Project-1",
         "CustomerCountryName" : "US"
      }
   }
}

以下是如何在 MongoDB 中建立一個巢狀索引的查詢

> db.nestedIndexDemo.createIndex({"CustomerDetails.CustomerListDetails.CustomerCountryName": 1});
{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

以下是顯示索引的查詢 -

> db.nestedIndexDemo.getIndexes();

輸出如下 -

[
   {
      "v" : 2,
      "key" : {
         "_id" : 1
      },
      "name" : "_id_",
      "ns" : "test.nestedIndexDemo"
   },
   {
      "v" : 2,
      "key" : {
         "CustomerDetails.CustomerListDetails.CustomerCountryName" : 1
      },
      "name" : "CustomerDetails.CustomerListDetails.CustomerCountryName_1",
      "ns" : "test.nestedIndexDemo"
   }
]

更新於: 30-Jul-2019

396 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

立刻開始
廣告