具有唯一布尔值 true 的猫鼬

Fil*_*šek 2 mongoose mongodb node.js

我知道如何将字符串设置为在我的架构中是唯一的,如下所示:

string: { type: String, unique: true }
Run Code Online (Sandbox Code Playgroud)

但是有没有办法在对象上使用具有真值的唯一布尔值并使用假值(默认设置)?我需要的是:如果我尝试保存一个具有真值的对象,而一个具有真值的对象已经存在,则返回错误。

感谢您的帮助。

Joh*_*yHK 8

您可以使用 MongoDB 对3.2 中添加的部分索引的支持来执行此操作。

var mySchema = new Schema({ oneTrue: Boolean });
mySchema.index({oneTrue: 1}, {unique: true, partialFilterExpression: {oneTrue: true}});
Run Code Online (Sandbox Code Playgroud)

这将oneTrue仅在其值为的字段上创建唯一索引true。这样,false允许多个具有值的文档,但只有一个位于true.