Syntax error How to restrict inserting an item with the same name in MongoDB?

How to restrict inserting an item with the same name in MongoDB?



For this, use ensureIndex() and set unique:true. Let us create a collection with documents. Here, when we try to inert duplicate item, then a duplicate key error occurs −

> db.demo316.ensureIndex({"SubjectName":1},{unique:true});
{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}
> db.demo316.insertOne({"SubjectName":"MySQL"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e50e378f8647eb59e56205d")
}
> db.demo316.insertOne({"SubjectName":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e50e37df8647eb59e56205e")
}
> db.demo316.insertOne({"SubjectName":"MongoDB"});
2020-02-22T13:47:05.186+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.demo316 index: SubjectName_1 dup key: { : "MongoDB" } :
WriteError({
   "index" : 0,
   "code" : 11000,
   "errmsg" : "E11000 duplicate key error collection: test.demo316 index: SubjectName_1 dup key: { : \"MongoDB\" }",
   "op" : {
      "_id" : ObjectId("5e50e381f8647eb59e56205f"),
      "SubjectName" : "MongoDB"
   }
})
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

Display all documents from a collection with the help of find() method −

> db.demo316.find();

This will produce the following output −

{ "_id" : ObjectId("5e50e378f8647eb59e56205d"), "SubjectName" : "MySQL" }
{ "_id" : ObjectId("5e50e37df8647eb59e56205e"), "SubjectName" : "MongoDB" }
Updated on: 2020-04-02T06:01:07+05:30

192 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements