gpt4 book ai didi

嵌入式文档的 Mongodb native 验证

转载 作者:可可西里 更新时间:2023-11-01 10:40:05 28 4
gpt4 key购买 nike

我正在尝试提出一个 Mongodb 的 native 验证规则,该规则将验证一个文档(具有嵌入式文档),以便嵌入式文档根本不存在,或者如果存在,它有一个或多个强制存在的字段.

我在下面有一个例子。一个 JSON 文档有一个嵌入文档 user。此 user 可能不存在,或者当它存在时,它需要有一个字段 name 强制存在。

"validator" : {
"$or" : [
{
"user" : {
"$exists" : "false",
"$type" : "null"
}
},
{
"user.name" : {
"$type" : "string",
"$exists" : "true"
}
}
]
}

当我尝试将一个空的 JSON 文档插入到我的集合 testschema 中时,比如 db.testschema.insert({}),我得到了下面的标准错误'告诉什么是错的和/或为什么。这应该是可能的,因为我的文档可以包含带有字段 name 的嵌入文档 user 或根本不包含嵌入文档。

WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})

验证器内部使用的运算符看起来是否正确?

最佳答案

首先nulltruefalse不应该作为字符串传递,false作为字符串传递将仅评估为 true

解决方案 不需要 "$type": null 验证器,只需 "$exists": false 就足够了,下面的验证对你有用

"validator" : {
"$or" : [
{
"user" : {
"$exists" : false,
}
},
{
"user.name" : {
"$type" : "string",
"$exists" : true
}
}
]
}

关于嵌入式文档的 Mongodb native 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47428430/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com