如何用MongoDB验证$ set'key'?

时间:2017-12-20 20:21:43

标签: javascript mongodb express mongoose

我有一个相当具体的案例:使用mongoose / mongo和用户对象

我想在一次通话中找到并更新用户。

 DB.collection('users').findOneAndUpdate({localId: id} ,{ "$set": { "name": "lla", "usnme": "As"} } ,callback);

请注意,“用户名”拼写错误。然而mongo更新了第一个字段(名称),并没有给出关于第二个字段的任何错误。

如何在不设置多个查询的情况下验证我在$ set中传递的密钥?

1 个答案:

答案 0 :(得分:0)

MongoDB在此建议的内容称为schema validation

在您的特定情况下,您可以运行以下命令以确保任何人都无法添加其他("错误的")字段:

db.runCommand({ "collMod": "users", "validator": {
  $jsonSchema: {
    additionalProperties: false,
    properties: {
      "_id": {
         bsonType: "objectId"
      },
      "name": {
         bsonType: "string"
      },
      "username": {
        bsonType: "string"
      }
    }
  }
}})

除此之外,我无法想到任何解决方案,因为MongoDB是一个文档数据库,默认情况下是无模式的,因此不会阻止你创建你告诉它创建的字段......