簡體   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