var siteModels = db.t_site_model.find().toArray(); siteModels.forEach(function(siteModel) { // 判断该文档是否为 'floor' 类型 // 构造更新对象 var updateFields = {}; //判断条件,成功就跳过 if (siteModel.sceneNum && siteModel.datasetId) { print("Skipping "); return; } // 判断并添加 sceneNum 或 datasetId 字段 if (!siteModel.sceneNum) { updateFields.sceneNum = siteModel.sceneCode; // 如果没有 sceneNum,设置为 sceneCode } if (!siteModel.datasetId) { var datasets = db.t_data_set.findOne({ isItself: true , sceneCode:siteModel.sceneCode}); if (datasets){ updateFields.datasetId = datasets._id; // 如果没有 datasetId,设置为 datasetId } } if (siteModel.type === 'floor') { updateFields.isItself = true; // 添加 isItself 字段 } // 如果有更新字段,则添加 isItself 字段 if (Object.keys(updateFields).length > 0) { print("updateFields",updateFields) // 执行更新操作 db.t_site_model.updateOne( { _id: siteModel._id }, // 根据 _id 找到对应文档 { $set: updateFields // 更新相关字段 } ); print("Updated document with _id: " + siteModel._id + " (sceneCode: " + siteModel.sceneCode + ")"); } else { print("Skipping update for document with _id: " + siteModel._id + " (sceneNum and datasetId already exist)"); } });