我有SQL Server的背景知识,我正在将一些数据迁移到MongoDB上,以使用Mongoose作为驱动程序进行概念验证项目。我想将数据库引用添加到另一个集合。我在这里尝试执行的基本示例:

项目架构:

{
    projectNo: String,
    projectTitle: String
}


文件架构:

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


我想向文档架构添加一个新键,该键引用项目集合的_id。如果我在SQL Server中这样做,则可以这样做:

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


谁能指出我正确的方向?谢谢!

凯文

最佳答案

好的,我不得不脱下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
    });
});


我敢肯定还有另一种方法可以做到,我很愿意提出建议。

08-28 09:55