0
我是新来的MongoDB noSQL数据库和新的文档验证。MongoDB 3.4文档验证匹配“存在”或“在”
我要指定一个字段没有出现在集合“存在”或它的值是一个0,1,2,3
之间我在下面的格式都试过:
db.createCollection("tickets", {
validator:{
$or:[{status:{$exists:false}},{status:{$in:[NumberInt(0),NumberInt(1),NumberInt(2),NumberInt(3)]}}]
}
})
的MongoDB让我插入的对象:
db.tickets.insert({
status: NumberInt(8)
})
两个单独的$存在和$在运营商对我的作品...... 什么,我做错了什么?
我试着用这个例子:
db.dropDatabase()
use prova
db.createCollection("tickets", {
validator: {
$or: [{data:{$exists: false}}, {data: {$type: "date"}}],
$or: [{status:{$exists: false}}, {status: {$in: [NumberInt(0), NumberInt(1), NumberInt(2), NumberInt(3)]}}],
}
})
db.tickets.insert({}) //Must be correct
db.tickets.insert({data:"hello"}) //Must be wrong
db.tickets.insert({data:new Date()}) //Must be correct
db.tickets.insert({status:NumberInt(5)}) //Must be wrong
db.tickets.insert({status:NumberInt(3)}) //Must be correct
db.tickets.insert({data:new Date(), status:NumberInt(2)}) //Must be correct
响应:ALL OK ...?
我从db.getCollectionInfos()这样的输出:
/* 1 */
[
{
"name" : "tickets",
"type" : "collection",
"options" : {
"validator" : {
"$or" : [
{
"status" : {
"$exists" : false
}
},
{
"status" : {
"$in" : [
0,
1,
2,
3
]
}
}
]
}
},
"info" : {
"readOnly" : false
},
"idIndex" : {
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "prova.tickets"
}
}
]
来自db.getCollectionInfos()的输出不符合您在上面定义的验证器。数据的验证在哪里? – Veeram
您可以直接删除数据库并尝试使用db.createCollection(“tickets”,{ validator:{ }或者:[{status:{$ exists:false}},{status: ),NumberInt(1),NumberInt(2),NumberInt(3)]}}], } })之后插入状态:8,插入并让我somefield:2,让我知道你得到的回应? – Veeram