Mongoose,集合中只有一个文档具有布尔属性的真值

时间:2014-10-01 13:28:02

标签: mongodb mongoose

我正在寻找优雅实现以下更新约束的方法:

var artifactSchema = new mongoose.Schema({

pid: String,
pname: String,
version: Number,
active: Boolean,
date_of_modification: Date,

tags: [String],

data: String

})

我希望集合中的文档只有活动字段的“true”。工件可以有多个版本,基线版本是active == true。

1 个答案:

答案 0 :(得分:0)

这有点愚蠢,但您可以使用唯一的sparse索引:

> db.artifacts.ensureIndex({ "active" : 1 }, { "sparse" : 1, "unique" : 1 })

唯一性确保集合中只有一个文档在true字段中具有active值。稀疏性确保多个文档不能设置active字段。副作用最多只有一个文档在false中具有active值。

有关MongoDB版本控制的大量有用建议,请查看askasya.com