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

问题描述 投票:0回答:1

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

我想在一个电话中找到并更新用户。

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

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

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

javascript mongodb express mongoose
1个回答
0
投票

MongoDB在这里建议的是schema validation

在您的特定情况下,您可以运行以下命令以确保任何人都不能添加其他(“不正确”)字段:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.