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。我的主要问题是这里是否有可能将这些文件集成到用户集合中,引用将被使用。