2017-03-10 2 views
1

내 몽구스 스키마에서 기본 배열 크기 및 값을 설정하려고하지만 문서에 실제로 데이터가없는 한 반환 값은 항상 []으로 표시됩니다.몽구스 기본 배열 크기 및 값 설정

"transform": { type: [ Number ], default: [0, 0, 0] } 

반환 값은 다음과 같습니다

"transform":[0,0,0] 

대답 : 어떤 새 문서에 데이터를 추가합니다 required: true 설정을가 반환되도록

"transform":[] 

가 어떻게 내 스키마를 구성 할 만들어진. 그러나 오래된 문서는 업데이트되지 않습니다.

"transform": { type: [ Number ], default: [0, 0, 0], required: true } 

업데이트 빨리 내가 ​​몽고에 업데이트가 다음 줄을 사용하여 기존의 모든 문서를 업그레이드 실행 내 데이터 문제를 해결하려면.

db.getCollection('objects').updateMany(
    { "properties.transform": []}, 
    { $set: { "properties.transform" : [0,0,0] }} 
); 

참고 : 필드를 변환 내 것은 따라서 "properties.transform"

+1

0이 비어있는 것으로 표시됩니다. – Remario

+0

무시할 수 있습니까? 나는 1,1,1을 사용할 수 있다고 가정하고 (다만 테스트를 거쳐 작동 함) 이상적이지 않습니다. – stuffyjoelab

+0

[왜 내 스키마가 몽구스 배열에 기본값을 추가하지 않습니까?] (http://stackoverflow.com/questions/31845282/why-doesnt-my-schema-to-add-default-values-in) -mongoose-arrays) –

답변

1

그럼 그 중 하나 스키마에 참으로 필요한 속성 설정의 자식입니다. 또는 기본값은 비어있는 false입니다. 이 경우 두 가지 방법을 모두 비울 수도 있고 값을 제공 할 수도 없습니다.

사용할 수있는 해킹은 다음과 같습니다. 필수 항목을 true로 설정하면 데이터 입력시 초기에 배열 0을 푸시합니다.

model.push([0,0,0]); 
+0

이전에 생성 된 문서를 테스트했으며, 기본값이 0으로 설정된 업데이트를 실행하고 true가 필요했습니다. 새 문서가 반환되었습니다. [0,0,0] – stuffyjoelab

+1

멋진 형님! 이전에 생성 된 문서로 인해 – Remario