MongoDB更新语句设置其他集合的值

时间:2015-03-06 20:30:39

标签: node.js mongodb mongoose updates conditional-statements

我有SQL服务器的背景,我正在将一些数据迁移到MongoDB,以获得使用Mongoose作为驱动程序的概念验证项目。我想将DB引用添加到另一个集合中。我在这里尝试做的一个基本例子:

项目架构:

{
    projectNo: String,
    projectTitle: String
}

文档架构:

{
    projectId: { type: mongoose.Schema.Types.ObjectId, ref: 'project'},
    projectNo: String,
    documentTitle: String
}

我想在Document模式中添加一个新键,该模式引用项目集合的_id。如果我在SQL Server中这样做,我会这样做:

UPDATE document
SET projectId = project._id 
FROM project 
WHERE document.projectNo = project.projectNo

有人能指出我正确的方向吗?谢谢!

凯文

1 个答案:

答案 0 :(得分:0)

好的,我不得不脱掉我的SQL Server帽子,用JS术语来思考它。对于项目中的每个项目,我想用项目_id更新这些集合。所以我想出了这个:

var proj = db.proj.find(); //load all the projects

proj.forEach(function(proj){ //loop through each one and update matching records in the collection
    db.forecast.update(
        {
            "projectNo" : proj.projectNo, 
            "$isolated" : true
        },{
            $set: { 
                projId : proj._id 
            }
        }, {
            "multi" : true 
    });
});

我确定还有其他方法可以做到这一点,我非常对建议持开放态度。