Javascript 修改Meteor中的集合值

Javascript 修改Meteor中的集合值,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我想编写一个查询,将项目字段的类型从字符串更改为对象 因此,如果project字段现在有值abcd,我希望它有这样一个对象: {id:'abcd'} 因此: 转向: project: {id: 'abcd'} 我在mongo做这件事没有问题: db.hello.find({}).forEach((project) => { project.project = { id: x.project } db.hello.save(x) }) 但我不知道如何在《流星》中做到这一

我想编写一个查询,将
项目字段
的类型从
字符串
更改为
对象

因此,如果
project
字段现在有值
abcd
,我希望它有这样一个对象:
{id:'abcd'}

因此:

转向:

project: {id: 'abcd'}
我在mongo做这件事没有问题:

db.hello.find({}).forEach((project) => {
 project.project = {
     id: x.project
 }
 db.hello.save(x)
})
但我不知道如何在《流星》中做到这一点。到目前为止,我已经:

Projects.update($set: { client: ??? } }, { multi: true });
我的两个主要问题是:

  • 我不知道如何获取客户端的当前值

  • 我不知道如何改变类型


  • 首先,如果您已经运行了查询,那么您知道数据库已经被调整了是吗?因为如果您确实运行了它,它将更新该集合中的所有文档

    请注意,这应该在服务器端运行,我不认为所有版本的minimongo都支持
    $type

    // 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 }
        }
    }) )
    
    // 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 }
        }
    }) )