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