Mongodb 唯一索引
Posted jiahaijiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、唯一索引:
可以在单一字段创建,创建唯一索引命令 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 ]
以上是关于Mongodb 唯一索引的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB——索引属性之唯一索引(Unique Indexes)