2017-12-19 13 views
0

project fieldのタイプをstringからobjectに変更するクエリを書きたいと思います。だから、 {id: 'abcd'} Meteorのコレクション値を変更する

project: {id: 'abcd'} 

project: 'abcd' 

はターンprojectフィールドは、現在値abcdを持っている場合

だから、私はそれがこのようなオブジェクトを持つようにしたいです私はmongoでそれをやっても問題はない:

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

しかし、私はメテオールでそれを行う方法がわかりません。これまでのところ私が持っている:

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

私の2つの主な問題は次のとおりである:私はクライアント

  • の現在の値を取得する方法がわからない

    1. 私はどのように知りません変更タイプ

  • 答えて

    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 } 
        } 
    })) 
    
    関連する問題