我可以在 mongodb 中定义一个需要设置某些属性的模式吗?很像NOT NULL
在 SQL 中。如果可能的话。这个的语法是什么?
我正在使用 node.js 和猫鼬。mongoose v3.6.15 mongodb v2.4.5
编辑 Charles A 提供的答案是正确的,但是通过查看文档,我发现在 mongoose 中也可以像这样在模式定义中定义一个字段:
foo : {
bar : { type : String, required : true }
}
在 Mongoose 中,您可以使用验证器在保存之前检查字段是否已设置。据我所知,没有办法在模式上指定一个字段是必需的,所以它需要更多的样板代码。
对于必填字段,在集合的验证器中使用 $AND 和“$exists: true”:
db.createCollection("foo", {
validator: {
$and: [ {"bar": {$type: "string", $exists: true}} ]
})
更多信息在这里 https://www.compose.com/articles/document-validation-in-mongodb-by-example/
对于任何在这里找到自己的方式的人,您可以使用“必需”,例如:
db.createCollection("person", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name" ],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
}
}
}
}
}
请注意,另一种方法是通过 mongoose 使用 Mongodb ,它允许直接在字段级别指定:
const person = new mongoose.Schema({
name {
type: String,
required: true
}
});