Rumah > pangkalan data > MongoDB > Elakkan penyertaan pendua dalam MongoDB?

Elakkan penyertaan pendua dalam MongoDB?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-08-29 08:29:13
ke hadapan
1654 orang telah melayarinya

避免 MongoDB 中出现重复条目​​?

Untuk mengelakkan entri pendua dalam MongoDB, anda boleh menggunakan createIndex(). Sintaksnya adalah seperti berikut -

db.yourCollectionName.createIndex({"yourFieldName":1},{unique:true});
Salin selepas log masuk

Mari kita laksanakan sintaks di atas. Pertanyaan untuk mengelakkan entri pendua dalam MongoDB adalah seperti berikut -

> db.avoidDuplicateEntriesDemo.createIndex({"UserName":1},{unique:true});
{
   "createdCollectionAutomatically" : true,
   "numIndexesBefore" : 1,
   "numIndexesAfter" : 2,
   "ok" : 1
}
Salin selepas log masuk

Sekarang masukkan beberapa rekod dalam koleksi di atas. Pertanyaan untuk memasukkan rekod adalah seperti berikut -

> db.avoidDuplicateEntriesDemo.insertOne({"UserName":"John"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90e1824afe5c1d2279d697")
}
Salin selepas log masuk

Setiap kali anda cuba memasukkan rekod yang sama sekali lagi, anda akan mendapat ralat -

> db.avoidDuplicateEntriesDemo.insertOne({"UserName":"John"});
2019-03-19T18:03:08.465+0530 E QUERY [js] WriteError: E11000 duplicate key error collection: test.avoidDuplicateEntriesDemo index: UserName_1 dup key: { : "John" } :
WriteError({
   "index" : 0,
   "code" : 11000,
   "errmsg" : "E11000 duplicate key error collection: test.avoidDuplicateEntriesDemo index: UserName_1 dup key: { : \"John\" }",
   "op" : {
      "_id" : ObjectId("5c90e1844afe5c1d2279d698"),
      "UserName" : "John"
   }
})
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
Salin selepas log masuk

Mari masukkan rekod lain. Pertanyaannya adalah seperti berikut -

> db.avoidDuplicateEntriesDemo.insertOne({"UserName":"Carol"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5c90e18d4afe5c1d2279d699")
}
Salin selepas log masuk

Paparkan semua dokumen dalam koleksi dengan bantuan kaedah find(). Pertanyaannya adalah seperti berikut -

> db.avoidDuplicateEntriesDemo.find();
Salin selepas log masuk

Berikut ialah output -

{ "_id" : ObjectId("5c90e1824afe5c1d2279d697"), "UserName" : "John" }
{ "_id" : ObjectId("5c90e18d4afe5c1d2279d699"), "UserName" : "Carol" }
Salin selepas log masuk

Atas ialah kandungan terperinci Elakkan penyertaan pendua dalam MongoDB?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan