Mongodbのネイティブ検証ルールを思いついて、埋め込まれたドキュメントが存在する場合には存在しないか強制的に存在する1つ以上のフィールド。埋め込みドキュメントのMongodbネイティブ検証
私は以下の例があります。 JSONドキュメントには埋め込みドキュメントuser
があります。このuser
が存在しないか、存在する場合は、必須フィールドにname
が必要です。
"validator" : {
"$or" : [
{
"user" : {
"$exists" : "false",
"$type" : "null"
}
},
{
"user.name" : {
"$type" : "string",
"$exists" : "true"
}
}
]
}
そして、私はdb.testschema.insert({})
のように私のコレクションtestschema
に空のJSON文書を挿入しようとすると、私が間違っているものを教えて、および/または、なぜしないの下に標準エラーを取得します。私の文書に埋め込み文書user
とフィールドname
が含まれているか、埋め込まれた文書がまったく含まれていない可能性があります。
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
バリデーター内部で使用されている演算子が正しく見えていますか?
すごいのために働くだろう、それは私のとてもダムです! 'db.getCollectionInfos({name: 'testschema'})[0] .options.validator'コマンドを実行して、どのバリデーションルールが既に設定されているかを確認するとき、Mongoシェルはこれらのブール値をラップします二重引用符で囲まれた値!この素晴らしいチップをありがとう!とても有難い。 – asgs
お手伝いします! – daemon24