如何使用mongodb验证程序验证对象数组?
我一直在尝试使用MongoDB提供的验证器验证我的数据,但遇到了一个问题。下面是我插入的一个简单的用户文档如何使用mongodb验证程序验证对象数组?,mongodb,mongodb-query,Mongodb,Mongodb Query,我一直在尝试使用MongoDB提供的验证器验证我的数据,但遇到了一个问题。下面是我插入的一个简单的用户文档 { "name" : "foo", "surname" : "bar", "books" : [ { "name" : "ABC", "no" : 19 }, { "name" : "DEF", "no" : 64 }, {
{
"name" : "foo",
"surname" : "bar",
"books" : [
{
"name" : "ABC",
"no" : 19
},
{
"name" : "DEF",
"no" : 64
},
{
"name" : "GHI",
"no" : 245
}
]
}
现在,这是已应用于用户集合的验证器。但是这现在对books数组有效,我将随文档一起插入它。我想检查对象内部的元素,它们是books数组的成员。对象的架构不会更改
db.runCommand({
collMod: "users",
validator: {
$or : [
{ "name" : { $type : "string" }},
{ "surname" : { $type : "string" }},
{ "books.name" : { $type : "string" }},
{ "books.no" : { $type : "number" }}
],
validationLevel: "strict"
});
我知道这个验证器是针对成员对象的,而不是针对数组的,但是我如何验证这样一个对象呢?您可以在3.6中使用expression进行验证 JsonSchema允许定义和指定所有元素的模式约束以及单个数组元素的特定约束
有许多例子可以帮助您理解语法。很久没有人问过这个问题了。
不管怎样,如果有人经历了这一切 对于MongoDB 3.6及更高版本,可以使用验证器实现这一点
db.createCollection(“用户”{
验证器:{
$jsonSchema:{
bsonType:“对象”,
必填项:[“姓名”、“姓氏”、“书籍”],
特性:{
姓名:{
bsonType:“字符串”,
描述:“必须是字符串且为必填项”
},
姓:{
bsonType:“字符串”,
描述:“必须是字符串且为必填项”
},
书籍:{
B类型:[“数组”],
项目:{
bsonType:“对象”,
必填项:[“名称”、“编号”],
特性:{
姓名:{
bsonType:“字符串”,
描述:“必须是字符串且为必填项”
},
否:{
b类型:“编号”,
描述:“必须是一个数字,并且是必需的”
}
}
},
描述:“必须是包含名称和编号的对象数组”
}
}
}
}
})
这个可以满足您的所有需求。有关更多信息,请参阅此链接我认为此链接将为您提供解决方案->嘿@RiyaSaxena。。。不,这不适用于mongodb。。无论如何,谢谢。您是否知道如何验证
数组
类型?这是无法完成的。不是现在,也许在未来的版本中,他们会给我们这个选项。有趣的是,我想发布这个答案,而你在同一个小时就已经发布了——尽管这个问题发布已经两年多了:)答案非常清楚,谢谢:)