2017-12-19 9 views
0

project field의 유형을 string에서 object으로 변경하는 쿼리를 작성하고 싶습니다. 그래서 {id: 'abcd'} Meteor에서 컬렉션 값 수정

:

project: {id: 'abcd'} 

:

project: 'abcd' 

가 켜 project 필드가 현재 값 abcd이있는 경우

그래서, 나는이 같은 객체를 갖고 싶어 몽고에서 아무런 문제가 없습니다.

db.hello.find({}).forEach((project) => { 
project.project = { 
    id: x.project 
} 
db.hello.save(x) 
}) 

하지만 유성에서는 그 방법을 모르겠습니다. 지금까지 내가 가지고 :

Projects.update($set: { client: ??? } }, { multi: true }); 

내 2 주 문제

은 다음과 같습니다

  1. 내가 모르는 클라이언트

  2. 의 현재 가치를 어떻게하는 방법을 모른다 변경 유형

답변

1

우선 쿼리를 실행 한 경우 db가 이미 조정 된 것을 알고 있습니다. 에스? 실행 한 경우 모든 컬렉션의 문서 중이 업데이트되었으므로!

서버 측에서 실행되어야하는데, $type은 모든 버전의 minimongo에서 지원되지 않는다고 생각합니다.

// grab the cursor all string typed `project` fields 
const cursor = Projects.find({ project: { $type : "string" } }); 
// grab the data from the cursor 
const projects = cursor.fetch(); 
// Loop on each project and update 
projects.forEach(project => Projects.update(project._id, { 
    $set: { 
     project: { id: project } 
    } 
}))