繁体   English   中英

使用PHP在Mongodb上创建集合时对字段进行数组验证

[英]Array validation on a field at collection creation on Mongodb using PHP

使用MongoDB 3.2,PHP 5.6.16和PHPDriver mongod 1.1和“官方” MongoDB PHPLIB时,我遇到了一些问题

我想使用验证器创建一个集合:

createCollection('client',[
'validator' => [
  'total' => ['$type' => 'int'],
  'Appliref' => ['$type'=> 'array'],
],
]);

如果我喜欢演示,Mongo将在插入时检查我的文档是否包含“总计”(即Int); 还有包含数组的“ Appliref”

(!仅在包含数组的情况下,它不会检查Appliref是否为数组:

例如 :

insertOne([
  'total'=>55,
  'Appliref'=>array('1224','4447')]; will not be ok
insertOne([
  'total'=>55,
  'Appliref'=>array('1224',array('1111','2222'))]; will be ok )

说明在$ type的文档中

但我的目标当然是同时验证两者,更具体地说是检查Appliref是否为数组。

我在其他网站上找到了解决方案:

db.createCollection("user" , { validator : { "hoge.0" : {$exists : true}}})

这个想法是检查数组的第一个元素是否存在;

我找不到使用=>在PHP中执行此操作的方法,但我不确定这是否是完美的解决方案

如果有人找到了解决方案(对于PHP使用,请::),或者使用我在PHP中发现的解决方案的一种方法,

对不起,英语不好,如果有的话。

用两个参数创建一个用户定义函数。 一个用于传递集合名称,另一个用于传递数组。 现在,在函数的定义部分,您可以按照以下代码检查数组。

function createMyCollection($collectionName,$array){
    if(is_array($array)){
       createCollection($collectionName,$array);
    }else{
       die("Invalid Array");
    }
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM