在MongoDB中的Array中查找并验证特定值

时间:2016-11-28 17:07:25

标签: arrays mongodb

我需要验证只有以下值是可接受的 - 如果用户提供Home Address,例如脚本需要更新文档和$push验证字段...类似于: “验证”:“地址元素验证失败| Address.type值:邮寄地址,帐单地址”。

{  
   "Addresses":[  
      {  
         "type":"Mailing Address"
      },
      {  
         "type":"Billing Address"
      }
   ]
}

此外,阵列不必具有两种地址类型......可能只有“邮件地址”或“计费地址”,或者没有(空数组)。但是一旦提供了类型 - 它必须仅包含上述类型。

1 个答案:

答案 0 :(得分:0)

您可以使用mongoDB提供的文档验证程序功能。

db.createCollection( "your collection name",
   { validator: { $or:
      [
         { "Addresses": { $exits: true } },
         { "Addresses.type": { $in: [ "Mailing Address", "Billing Address" ] } }
      ]
   }
} )

这样可确保地址字段存在且包含邮寄地址或帐单邮寄地址。如果除了这个之外的任何东西都会抛出错误。

您也可以控制验证级别。浏览一下页面,以便深入了解mongo文档验证器的工作原理。

https://docs.mongodb.com/v3.2/core/document-validation/