我有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
有人能指出我正确的方向吗?谢谢!
凯文
答案 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
});
});
我确定还有其他方法可以做到这一点,我非常对建议持开放态度。