2

我试图了解 MongoDB 中的稀疏索引。我明白,如果我这样做:

> db.check.ensureIndex({"id":1},{sparse:true, unique:true})

我只能插入id字段不重复且不缺席的文档。因此,我尝试了,

> db.check.insert({id:1})
> db.check.insert({id:1})

正如我所料,它给出了:

E11000 duplicate key error index: test.check.$id_1  dup key: { : 1.0 }

但是,插入一个不存在id字段的文档:

> db.check.insert({})

作品!出了什么问题?

4

2 回答 2

3

稀疏唯一索引意味着文档不需要具有索引字段,但是当它具有该字段时,它必须是唯一的。

当该字段不存在时,您可以将任意数量的文档添加到集合中。请注意,当您插入一个空文档时,_id 字段将获得一个自动生成的 ObjectID,它(尽可能保证)是唯一的。

于 2013-06-01T23:17:05.497 回答
1

差不多就是这个sparse意思。来自文档

稀疏索引仅包含具有索引字段的文档的条目。[5]任何缺少该字段的文档都不会被索引。

换句话说,您缺少的 id 字段使索引甚至不考虑该条目进行唯一检查。

于 2013-06-01T23:15:41.800 回答