querySceneCode.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. var siteModels = db.t_site_model.find().toArray();
  2. siteModels.forEach(function(siteModel) {
  3. // 判断该文档是否为 'floor' 类型
  4. // 构造更新对象
  5. var updateFields = {};
  6. //判断条件,成功就跳过
  7. if (siteModel.sceneNum && siteModel.datasetId) {
  8. print("Skipping ");
  9. return;
  10. }
  11. // 判断并添加 sceneNum 或 datasetId 字段
  12. if (!siteModel.sceneNum) {
  13. updateFields.sceneNum = siteModel.sceneCode; // 如果没有 sceneNum,设置为 sceneCode
  14. }
  15. if (!siteModel.datasetId) {
  16. var datasets = db.t_data_set.findOne({ isItself: true , sceneCode:siteModel.sceneCode});
  17. if (datasets){
  18. updateFields.datasetId = datasets._id; // 如果没有 datasetId,设置为 datasetId
  19. }
  20. }
  21. if (siteModel.type === 'floor') {
  22. updateFields.isItself = true; // 添加 isItself 字段
  23. }
  24. // 如果有更新字段,则添加 isItself 字段
  25. if (Object.keys(updateFields).length > 0) {
  26. print("updateFields",updateFields)
  27. // 执行更新操作
  28. db.t_site_model.updateOne(
  29. { _id: siteModel._id }, // 根据 _id 找到对应文档
  30. {
  31. $set: updateFields // 更新相关字段
  32. }
  33. );
  34. print("Updated document with _id: " + siteModel._id + " (sceneCode: " + siteModel.sceneCode + ")");
  35. } else {
  36. print("Skipping update for document with _id: " + siteModel._id + " (sceneNum and datasetId already exist)");
  37. }
  38. });