Mongodb 唯一索引

生也有涯,知也无涯。这篇文章主要讲述Mongodb 唯一索引相关的知识,希望能为你提供帮助。
1、在更新mongodb文档字段时出现了索引为空值的提示1.2、查看集合索引:

> db.test2.getIndexes() //查看集合索引 ["v" : 2, "key" : "_id" : 1 , "name" : "_id_", "ns" : "jia_test.test2" ,"v" : 2, "unique" : true,//唯一索引 "key" : "cr_user" : 1 , "name" : "cr_user_1", "ns" : "jia_test.test2"]

1.3、看了官方文档是这么说的: 感兴趣的可以点击文字查看官方文档++如果一个文档在唯一索引中没有索引字段的值,那么该索引将为这个文档存储一个空值。由于唯一约束,MongoDB只允许一个缺少索引字段的文档。如果有多个文档没有索引字段的值或缺少索引字段,那么索引构建将会由于重复键错误而失败.++
操作:删除掉没有唯一索引字段的文档,更新成功。
> db.test2.remove("us_amount" : NumberLong(104857600)) WriteResult( "nRemoved" : 1 ) > db.test2.update("cr_user":"0d69c51de9ea464da4b3aff397fa3d0a", "us_amount": NumberLong(104857600)); WriteResult( "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 )

2、唯一索引:【Mongodb 唯一索引】可以在单一字段创建,创建唯一索引命令 ??db.collection.createIndex()?? 将??unique 设置为true??
唯一索引允许将以下文档插入到集合中,
db.collection.insertMany( [ _id: 2, a: [loc: "A" ,qty: 5] , _id: 3, a: [loc: "A", qty: 10] ] )

因为该索引对a.loc和a.qty值的组合强制唯一性,所以下列数据插入是成功的
> db.collection.createIndex("a.loc": 1, "a.qty": 1 ,unique: true)"createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1> db.collection.insertMany( [ _id: 2, a: [loc: "A" ,qty: 5] , _id: 3, a: [loc: "A", qty: 10] ] ) "acknowledged" : true, "insertedIds" : [ 2, 3 ] > db.collection.insertMany( [ _id: 4, a: [loc: "C" ,qty: 10] , _id: 5, a: [loc: "D", qty: 10]] ) "acknowledged" : true, "insertedIds" : [ 4, 5 ]


    推荐阅读