2017-09-28 13 views
0

유효성 검사기가있는 mongo 모음을 덤프/복원하려고합니다. 나는 덤프를 실행, 그리고mongorestore는 regex validator를 처리 할 수 ​​있습니까?

use test 
db.users.drop() 
db.createCollection("users", {validator : { 
            name : { 
             $type : "string", 
             $regex : /^[A-z]*$/ 
            }, 
            } 
        }) 
// { "ok" : 1 } 
db.getCollectionInfos() 
// looks like it should... 
db.users.insertOne({"name": "[email protected]"}); 
// fails 
db.users.insertOne({"name": "Valid"}); 
// succeeds 
db.users.find() 
// { "_id" : ObjectId("59cd85d84f2803b08e9218ac"), "name" : "Valid" } 

잘 보이는 : 는 첫째, 내 컬렉션을 만들 :이 검증자는 표면에, 그것은 mongorestore 수입 할 수없는 것처럼 보이는, 정규 표현식에이

/usr/bin/mongodump --host $MYHOST \ 
        --port $MYPORT \ 
        --db test \ 
        --gzip \ 
        --archive=test.mongodump.gz 

다음, 실패한 복원 :

/usr/bin/mongorestore --host $MYHOST \ 
         --port $MYPORT \ 
         --gzip \ 
         --archive=test.mongodump.gz 

오류 :

2017-09-28T23:31:30.626+0000 preparing collections to restore from 
2017-09-28T23:31:30.691+0000 reading metadata for test.users from archive 'test.mongodump.gz' 
2017-09-28T23:31:30.692+0000 Failed: test.users: error parsing metadata from archive 'test.mongodump.gz': extended json in 'options': expected $regex field to have string value 

나는 문서를 mongdump와 mongorestore에 쏟아 부었지만 아무데도 못 받았다. --noOptionsRestore, 같은 오류를 시도했습니다.

나는 몽고 비교적 새로운 해요, 그래서 난 그냥도 $options = '' 경우, 간단한 뭔가 ...

답변

0

그것은 당신이 $ 정규식이있는 경우, 당신은 또한 $options을 필요로 밝혀 누락 될 수 있습니다. 힌트의 오류 메시지 정렬이 있지만, 매우 가난하게. 에서 생성 문을 변경 :

db.createCollection("users", {validator : { 
            name : { 
             $type : "string", 
             $regex : /^[A-z]*$/ 
            }, 
            } 
        }) 

db.createCollection("users", {validator : { 
            name : { 
             $type : "string", 
             $regex : /^[A-z]*$/, 
             $options: '' 
            }, 
            } 
        }) 

을하면 문제를 해결