需要帮助的一个表

问题描述:

有2个选项,以显示两个阵列 我的数据库构建这样需要帮助的一个表

{ 
    "_id" : ObjectId("58ecbb3be949603f122dfcc4"), 
    "work_id" : 651853, 
    "date" : ISODate("2017-04-10T00:00:00.000Z"), 
    "updated_at" : ISODate("2017-04-11T11:17:42.067Z"), 
    "name" : "John Doe", 
    "wage_type" : [ 
     { 
      "_id" : ObjectId("58ecbb567f7ed00c2ca041b6"), 
      "type_ident" : "157", 
      "start_string" : "020000", 
      "start_time" : "02:00:00", 
      "total" : "08:00:00", 
      "end_time" : "09:59:59", 
      "end_string" : "095959", 
      "group" : "Wage Type<br/>", 
      "end_date" : "2017-04-10", 
      "type" : "Morning Hours", 
      "start_date" : "2017-04-10", 
      "time_sheet_ident" : "248288" 
     } 
    ], 
    "campaign" : [ 
     { 
      "_id" : ObjectId("58ecbb567f7ed00c2ca041b5"), 
      "type_ident" : "165", 
      "start_string" : "020000", 
      "start_time" : "02:00:00", 
      "total" : "08:00:00", 
      "end_time" : "09:59:59", 
      "end_string" : "095959", 
      "group" : "Campaign<br/>", 
      "end_date" : "2017-04-10", 
      "type" : "Waitter", 
      "start_date" : "2017-04-10", 
      "time_sheet_ident" : "248288" 
     } 
    ], 
    "__v" : 0, 
    "created_at" : ISODate("2017-04-11T11:17:13.182Z") 
} 

但我发现2个困难 首先当一个工人都有这种结构基于用户

根据用户征战工资

John Doe | Morning Hours | 4.00-12.00 

John Doe | Waiter | 4.00-8.00 
John Doe | Bartender | 8.00-12.00 

这是基于系列中的其他选项

Jim Dow | Morning Hours | 9.00-16.00 
JIm Dow | Night Hours | 16-18 

Jim Dow | Waitter | 9.00-18.00 

自己能做什么到现在是当具有相同的开始时间和结束时间,所以我通过在运动他的工作

难以找到的部分是当他们是2不同的广告系列上的数据库john doe或2不同时间表上的jim dow

如果u能帮助我在此先感谢

+0

_“如果你能帮助我”_不是问题。请添加一个明确的问题陈述,并发布一个[mcve]。 – evolutionxbox

+0

@evolutionxbox你还希望我向你展示什么 –

+0

我之前的评论陈述了我认为会帮助更多人试着回答你的问题。 – evolutionxbox

解决它在我赢得
的(让我= 0; i < timesheets.length; i ++){

   if (timesheets[i].wage_type !== 'none' && timesheets[i].wage_type || timesheets[i].campaign !== 'none' && timesheets[i].campaign) { 
        for (let j = 0; j < timesheets[i].wage_type.length; j++) { 
         for (let k = 0; k < timesheets[i].campaign.length; k++){ 





          if(timesheets[i].wage_type[j].start_time == timesheets[i].campaign[k].start_time && timesheets[i].wage_type[j].end_time == timesheets[i].campaign[k].end_time && timesheets[i].wage_type[j].time_sheet_ident == timesheets[i].campaign[k].time_sheet_ident) { 
           const temp = {}; 
           temp.ccms_id = timesheets[i].ccms_id; 
           temp.date = timesheets[i].date; 
           temp.name = timesheets[i].name; 
           temp.campaign = timesheets[i].campaign[k].type; 
           temp.type = timesheets[i].wage_type[j].type; 
           temp.start_time = timesheets[i].wage_type[j].start_time; 
           temp.end_time = timesheets[i].wage_type[j].end_time; 
           temp.total = timesheets[i].wage_type[j].total; 
           wages.push(temp); 
          } 
          else if (timesheets[i].wage_type[j].start_time <= timesheets[i].campaign[k].start_time && timesheets[i].wage_type[j].end_time >= timesheets[i].campaign[k].end_time){ 
           const temp = {}; 
           temp.ccms_id = timesheets[i].ccms_id; 
           temp.date = timesheets[i].date; 
           temp.name = timesheets[i].name; 
           temp.campaign = timesheets[i].campaign[k].type; 
           temp.type = timesheets[i].wage_type[j].type; 
           temp.start_time = timesheets[i].campaign[k].start_time; 
           temp.end_time = timesheets[i].campaign[k].end_time; 
           temp.total = timesheets[i].campaign[k].total; 
           wages.push(temp); 
          } 
          else if (timesheets[i].wage_type[j].start_time >= timesheets[i].campaign[k].start_time && timesheets[i].wage_type[j].end_time <= timesheets[i].campaign[k].end_time){ 
           const temp = {}; 
           temp.ccms_id = timesheets[i].ccms_id; 
           temp.date = timesheets[i].date; 
           temp.name = timesheets[i].name; 
           temp.campaign = timesheets[i].campaign[k].type; 
           temp.type = timesheets[i].wage_type[j].type; 
           temp.start_time = timesheets[i].wage_type[j].start_time; 
           temp.end_time = timesheets[i].wage_type[j].end_time; 
           temp.total = timesheets[i].wage_type[j].total; 
           wages.push(temp); 
          } 
         } 
        } 
       } 
      }