我正在寻找优雅实现以下更新约束的方法:
var artifactSchema = new mongoose.Schema({
pid: String,
pname: String,
version: Number,
active: Boolean,
date_of_modification: Date,
tags: [String],
data: String
})
我希望集合中的文档只有活动字段的“true”。工件可以有多个版本,基线版本是active == true。
答案 0 :(得分:0)
这有点愚蠢,但您可以使用唯一的sparse索引:
> db.artifacts.ensureIndex({ "active" : 1 }, { "sparse" : 1, "unique" : 1 })
唯一性确保集合中只有一个文档在true
字段中具有active
值。稀疏性确保多个文档不能设置active
字段。副作用最多只有一个文档在false
中具有active
值。
有关MongoDB版本控制的大量有用建议,请查看askasya.com。