2013-07-16 32 views
0

其中許多文件是象下面這樣:我收集來自多個嵌入文檔查找最大日期

{ "_id" :123, 
    "a" :[ 
      { "_id" : 1, 
       "dt" : ISODate("2013-06-10T19:38:42Z") 
      }, 
      { "_id" : 2, 
       "dt" : ISODate("2013-02-10T19:38:42Z") 
      } 
     ], 
    "b" :[ 
      { "_id" : 1, 
       "dt" : ISODate("2013-02-10T19:38:42Z") 
      }, 
      { "_id" : 2, 
       "dt" : ISODate("2013-23-10T19:38:42Z") 
      } 
     ], 
    "c" :[ 
      { "_id" : 1, 
       "dt" : ISODate("2013-03-10T19:38:42Z") 
      }, 
      { "_id" : 2, 
       "dt" : ISODate("2013-13-10T19:38:42Z") 
      } 
     ] 
} 

我想找到整個文檔的最大日期(A,B,C)。 我現在的解決方案是,我循環遍歷所有根_id,然後在每個根文檔的每個a,b,c的彙總框架中執行$match。這聽起來效率很低,有什麼更好的想法?

+0

您是指a,b和c中所有日期的最大值? – innoSPG

+0

如果提前未知a,b,c這些鍵,則需要嘗試縮小地圖。你嘗試過嗎? – WiredPrairie

+0

@innoSPG是.......... – PUG

回答

0

您的問題與this question非常相似。一探究竟。

與該解決方案一樣,您可以使用MongoDB的彙總框架處理您的問題,使用$project$cond運算符在每個步驟保留最大值的同時重複平整文檔。