[MONGODB] 몽구스 스키마의 배열 크기에 대한 제한을 설정하는 방법
MONGODB몽구스 스키마의 배열 크기에 대한 제한을 설정하는 방법
몽구스 스키마를 작성하는 동안 당신이겠습니까 종류 나 배열 크기에 설정된 제한 할 수있는 방법이있다 말할 수 있습니다. 예를 들면
var peopleSchema = new Schema({
name: {
type: String,
required: true,
default: true
},
/* here I want to have limit: no more than 10 friends.
Is it possible to define in schema?*/
friends: [{
type: Schema.Types.ObjectId,
ref: 'peopleModel'
}]
})
해결법
-
==============================
1.스키마 설정에 작은 팅겨으로 당신은 유효성 검사 옵션을 추가 할 수 있습니다 :
스키마 설정에 작은 팅겨으로 당신은 유효성 검사 옵션을 추가 할 수 있습니다 :
var peopleSchema = new Schema({ name: { type: String, required: true, default: true }, friends: { type: [{ type: Schema.Types.ObjectId, ref: 'peopleModel' }], validate: [arrayLimit, '{PATH} exceeds the limit of 10'] } }); function arrayLimit(val) { return val.length <= 10; }
-
==============================
2.만 유효가 삽입됩니다 당신이 검증 $ jsonSchema에 대해 검증됩니다 업데이트 서버 측에서 수집, 삽입 된 각 문서 / 대한 유효성 검사를 추가 할 수 있습니다 몽고 3.6에서 시작하여 유효성 검사 오류가 유효 문서가 될 것입니다
만 유효가 삽입됩니다 당신이 검증 $ jsonSchema에 대해 검증됩니다 업데이트 서버 측에서 수집, 삽입 된 각 문서 / 대한 유효성 검사를 추가 할 수 있습니다 몽고 3.6에서 시작하여 유효성 검사 오류가 유효 문서가 될 것입니다
db.createCollection("people", { validator: { $jsonSchema: { bsonType: "object", required: [ "name" ], properties: { name: { bsonType: ["string"], description: "must be a string" }, friends: { bsonType: ["array"], items : { bsonType: ["string"] }, minItems: 0, maxItems: 10, description: "must be a array of string and max is 10" } } } } });
수집
> db.people.find()
유효한 문서
> db.people.insert({name: 'abc' , friends : ['1','2','3','4','5','6','7','8','9','10']}) WriteResult({ "nInserted" : 1 })
잘못된 문서
> db.people.insert({name: 'def' , friends : ['1','2','3','4','5','6','7','8','9','10', '11']}) WriteResult({ "nInserted" : 0, "writeError" : { "code" : 121, "errmsg" : "Document failed validation" } })
찾기
> db.people.find() { "_id" : ObjectId("5a9779b60546616d5377ec1c"), "name" : "abc", "friends" : [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ] } >
-
==============================
3.당신은 당신의 배열에 새로운 친구 ID를 밀어시 $ 슬라이스 수정을 사용할 수 있습니다 https://docs.mongodb.com/manual/reference/operator/update/slice/#up._S_slice
당신은 당신의 배열에 새로운 친구 ID를 밀어시 $ 슬라이스 수정을 사용할 수 있습니다 https://docs.mongodb.com/manual/reference/operator/update/slice/#up._S_slice
$push: { friends: { $each: [id], $slice: -10 } }
from https://stackoverflow.com/questions/28514790/how-to-set-limit-for-array-size-in-mongoose-schema by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 제한 메모리 (0) | 2019.12.23 |
---|---|
[MONGODB] 설정 MongoDB의 프로그래밍 컨버터 (0) | 2019.12.23 |
[MONGODB] 몽구스 - ObjectId가 배열에 채우기를 사용 (0) | 2019.12.22 |
[MONGODB] MongoDB를가 : 큰 파일을 가져올 때 mongoimport는 연결이 끊어 (0) | 2019.12.22 |
[MONGODB] 중첩 된 필드에서 MongoDB를 업데이트 데이터 (0) | 2019.12.22 |