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

Làm cách nào để tạo chỉ mục với MongoDB?

Để tạo chỉ mục trong MongoDB, hãy sử dụng phương thức ensureIndex (). Trước tiên, hãy để chúng tôi tạo một bộ sưu tập bằng cách sử dụng truy vấn sau

> db.createCollection(&qu/ot;creatingUniqueIndexDemo");
{ "ok" : 1 }

Sau đây là truy vấn để tạo chỉ mục trên tập hợp trên:

> db.creatingUniqueIndexDemo.ensureIndex({"UserCountryName":1},{unique:true});
{
   "createdCollectionAutomatically" : false,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}

Sau đây là truy vấn để chèn một số tài liệu trong bộ sưu tập trên

>db.creatingUniqueIndexDemo.insertOne({"UserName":"John","UserAge":21,"UserCountryName":"US"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9947bd330fd0aa0d2fe4d8")
}
>db.creatingUniqueIndexDemo.insertOne({"UserName":"Mike","UserAge":23,"UserCountryName":"UK"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9947c9330fd0aa0d2fe4d9")
}
>db.creatingUniqueIndexDemo.insertOne({"UserName":"Robert","UserAge":26,"UserCountryName":"US"});
2019-03-26T02:57:52.670+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.creatingUniqueIndexDemo index: UserCountryName_1 dup key: { : "US" } :
WriteError({
   "index" : 0,
   "code" : 11000,
   "errmsg" : "E11000 duplicate key error collection: test.creatingUniqueIndexDemo index: .  
   UserCountryName_1 dup key: { : \"US\" }",
   "op" : {
      "_id" : ObjectId("5c9947d8330fd0aa0d2fe4da"),
      "UserName" : "Robert",
      "UserAge" : 26,
      "UserCountryName" : "US"
   }
})
WriteError@src/mongo/shell/bulk_api.js:461:48
Bulk/mergeBatchResults@src/mongo/shell/bulk_api.js:841:49
Bulk/executeBatch@src/mongo/shell/bulk_api.js:906:13
Bulk/this.execute@src/mongo/shell/bulk_api.js:1150:21
DBCollection.prototype.insertOne@src/mongo/shell/crud_api.js:252:9
@(shell):1:1
> db.creatingUniqueIndexDemo.insertOne({"UserName":"Robert","UserAge":26,"UserCountryName":"AUS"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c9947e3330fd0aa0d2fe4db")
}

Sau đây là truy vấn để hiển thị tất cả các tài liệu từ một bộ sưu tập với sự trợ giúp của phương thức find ()

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

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

{
   "_id" : ObjectId("5c9947bd330fd0aa0d2fe4d8"),
   "UserName" : "John",
   "UserAge" : 21,
   "UserCountryName" : "US"
}
{
   "_id" : ObjectId("5c9947c9330fd0aa0d2fe4d9"),
   "UserName" : "Mike",
   "UserAge" : 23,
   "UserCountryName" : "UK"
}
{
   "_id" : ObjectId("5c9947e3330fd0aa0d2fe4db"),
   "UserName" : "Robert",
   "UserAge" : 26,
   "UserCountryName" : "AUS"
}