使用正則表示式時避免 MongoDB 效能問題


為了避免 MongoDB 中的效能問題,請使用索引的概念。讓我們建立一個帶文件的集合 -

> db.demo531.createIndex({"CountryName":"text","Name":"text"});{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}
> db.demo531.insertOne({CountryName:"US","Name":"Chris"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b2b60ef4dcbee04fbbbf2")
}
> db.demo531.insertOne({CountryName:"UK","Name":"David"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b2b6cef4dcbee04fbbbf3")
}
> db.demo531.insertOne({CountryName:"AUS","Name":"chris"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b2b74ef4dcbee04fbbbf4")
}
> db.demo531.insertOne({CountryName:"US","Name":"CHRIS"});{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e8b2badef4dcbee04fbbbf5")
}

在 find() 方法的幫助下,從集合中顯示所有文件 -

> db.demo531.find();

這會產生以下輸出 -

{ "_id" : ObjectId("5e8b2b60ef4dcbee04fbbbf2"), "CountryName" : "US", "Name" : "Chris" }
{ "_id" : ObjectId("5e8b2b6cef4dcbee04fbbbf3"), "CountryName" : "UK", "Name" : "David" }
{ "_id" : ObjectId("5e8b2b74ef4dcbee04fbbbf4"), "CountryName" : "AUS", "Name" : "chris" }
{ "_id" : ObjectId("5e8b2badef4dcbee04fbbbf5"), "CountryName" : "US", "Name" : "CHRIS" }

以下是使用正則表示式的查詢 -

> db.demo531.find({CountryName: "US", "Name": { "$regex": "chris", "$options": "i" }}).limit(4);

這會產生以下輸出 -

{ "_id" : ObjectId("5e8b2b60ef4dcbee04fbbbf2"), "CountryName" : "US", "Name" : "Chris" }
{ "_id" : ObjectId("5e8b2badef4dcbee04fbbbf5"), "CountryName" : "US", "Name" : "CHRIS" }

更新於:13-5-2020

385 瀏覽

開啟您的 職業

完成課程後獲得認證

開始
廣告