验证可能不存在的字段上的$ regex

时间:2017-06-19 15:24:33

标签: node.js mongodb

name: { 
  $regex: /^.{0,200}$/ 
} 

如果不保证名称字段存在,是否可以使用MongoDB文档验证进行此类验证?因为现在我得到验证错误,如果该名称字段不存在

2 个答案:

答案 0 :(得分:1)

根据您的问题和评论,您可能希望在集合中定义验证,以便根据正则表达式验证名称字段(如果存在)。要实现这一点,请向您的验证器添加$ exists false。

db.createCollection( "contacts",
{ validator: { $or:
  [
     { name: { $exists: false} },
     { name: { $regex: /^.{0,200}$/ } }
  ]
}
} )

如果你想允许这样的东西

{
   name:  null
}

您还需要在验证中添加$ne

 $ne: null

这有帮助吗?

答案 1 :(得分:0)

在查询中使用$ exists 例如:

db.inventory.find( { name: { $exists: true, $regex: /^.{0,200}$/  } } )

有关$存在的更多信息,请参阅以下链接

Link

希望这可以解决您的问题