确保数组字段中各个值的唯一性
除了上面的示例外,MongoDB中还有一个函数可确保在将新对象/值添加到数组字段时,仅在值/对象不存在时才执行更新。
因此,如果您有一个如下所示的文档:
{ _id: 123, kittens: [456] }
这将被允许:
db.cats.update({_id:123}, {$push: {kittens:456}})
导致
{ _id: 123, kittens: [456, 456] }
但是,使用$ addToSet函数(而不是$ push)将在添加值之前检查该值是否已经存在。因此,从以下内容开始:
{ _id: 123, kittens: [456] }
然后执行:
db.cats.update({_id:123}, {$addToSet: {kittens:456}})
不会有任何影响。
因此,长话短说,唯一约束不能验证数组字段的值项内的唯一性,只是两个文档在索引字段中不能具有相同的值。