2016-11-28 72 views
0

我需要验证以下值是否可接受 - 如果用户提供Home Address例如脚本需要更新doc和$push验证字段...类似于: “验证“:”地址元素验证失败|地址类型值:邮寄地址,帐单地址“。在MongoDB中查找并验证Array中的特定值

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

此外,该阵列不必有两种地址类型......可能有两种ONLY“邮寄地址”或“帐单地址”,或无(空数组)。但是一旦提供了类型 - 它只能包含上述类型。

回答

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/

+0

谢谢@satish。但是,我需要$推上面的“验证”字段。 –

+0

验证器在插入或更新文档时验证文档。所以当您更新文档时,$推送将被关注。 –