MongoDB文档验证失败
正在尝试测试以下文档的验证:MongoDB文档验证失败,mongodb,validation,document,Mongodb,Validation,Document,正在尝试测试以下文档的验证: db.createCollection("Users", { validator: { $and: [ { Uid: { $type: "string", $exists: true } }, { "Doc.Name": { $type: "string", $exists: true}, "Doc.Files
db.createCollection("Users", {
validator: {
$and: [
{
Uid: {
$type: "string",
$exists: true
}
},
{
"Doc.Name": { $type: "string", $exists: true},
"Doc.Files": [
{
"$ref": { $in: [ "fs.files" ] },
"$id": { $type: "objectId", $exists: true },
"$db": { $in: [ "mydb" ] }
}
]
}
]
}
})
使用插入命令:
db.Users.insert({
Uid: "ABCDFE123m",
Doc: {
Name: "12hgf123",
Files: [
{
$ref:"fs.files",
$id: ObjectId("5910e46b24f3f7057c4088a8"),
$db: "mydb"
},
{
$ref:"fs.files",
$id: ObjectId("4010e46b24f3f7057c408806"),
$db: "mydb"
}
]
}
})
我得到以下错误:
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 121,
"errmsg" : "Document failed validation"
}
})
启用以验证文档插入。有人能帮我吗?我好像忘了什么
关于不要在NoSQL数据库中使用引用完整性。有没有关于如何验证文档的建议?您正在尝试使用非关系数据库(面向文档)来实现其中的关系。我可以帮你解决你的问题,但这不是你首先应该面对的问题。与其解决此问题,不如考虑如何组织数据,使其不存在联接和关系。不应该这样做的主要原因是,Mongo不提供在存在关系的情况下保持多个集合之间数据一致所需的保证。如果您想要关系,请使用提供此类保证的关系数据库(例如:ACID)。我有用户集合,每个用户可以下载一个或多个文件。所以我想在用户和它的下载文件之间创建一个链接。您知道如何在mongodb集合中集成文件吗?它不同于GridFS默认集合fs.files和fs.chunk。我的主要问题是这里是否有可能将这些文件集成到用户集合中,引用将被使用。