0
MongoDB noSQLデータベースが新しく、ドキュメントバリデーションが初めてです。MongoDB 3.4ドキュメントのバリデーションのマッチが「存在する」または「存在する」
私はフィールドが「存在」しないか、その値が1私は、次の形式で試してみました
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"
}
}
]
from db.getCollectionInfos()の出力は、上で定義したバリデータと一致しません。データの検証はどこですか? – Veeram
データベースを削除して、db.createCollection( "tickets"、{ バリデータ:{ $または:{{ステータス:{$存在する}}}、{ステータス:{$ in:[NumberInt )、NumberInt(1)、NumberInt(2)、NumberInt(3)]}}、 } })、その後にステータスを挿入します。8を挿入して、somefield:2を挿入して、 ? – Veeram