修改Meteor中的集合值

问题描述 投票:0回答:1

我想写一个查询,将project field的类型从string更改为object

所以,如果project字段现在具有值abcd,我希望它有这样的对象:{id: 'abcd'}

所以:

project: '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 });

我的两个主要问题是:

  1. 我不知道如何获得客户的当前价值
  2. 我不知道如何改变类型
javascript mongodb meteor
1个回答
1
投票

首先,如果你已经运行了查询,那么你知道db已经被调整了吗?因为如果你运行了它,它会更新该集合中的所有文档!

请注意,这应该在服务器端运行,我不认为所有版本的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 }
    }
}) )
© www.soinside.com 2019 - 2024. All rights reserved.