2017-10-05 85 views
0

我正在將我的報告網站從MySQL轉換爲C#中的MongoDB。 到目前爲止,我很滿意MongoDB插入數據。 現在,從收藏中,我需要打印出來。C#中MongoDB查詢報告的最佳方式是什麼?

原來,我的查詢是這樣的

strSQL = "SELECT " + 
       " '" + strSearchingStartDate + "' AS SearchStartDate, '" + strSearchingEndDate + "' AS SearchEndDate, '" + strCurrentUserName + "' as WhoPrint, " + 
       " machinelograwdata.MachineID , " + 
       " machinelograwdata.Parameter1 AS 'Code', " + 
       " machinelograwdata.Parameter42 AS 'Orders', " + 
       " Temp2.HideStartTime AS StartTime, " + 
       " machinelograwdata.EndTime, " + 
       " UNIX_TIMESTAMP(machinelograwdata.EndTime) - UNIX_TIMESTAMP(Temp2.HideStartTime) AS Duration, " + 
       " Temp.StartTime AS CutStartTime, " + 
       " Temp.EndTime AS CutEndTime, " + 
       " Temp.Duration AS CutDuration, " + 
       " NULL AS NestingStartTime, " + 
       " NULL AS NestingEndTime, " + 
       " '0.00' AS NestingDuration, " + 
       " '0.00' AS 'SupplierAream2', " + 
       " ROUND(machinelograwdata.Parameter3/1000000, 2) AS 'GrossAream2', " + 
       " ROUND(machinelograwdata.Parameter26/1000000, 2) AS 'NetAream2', " + 
       " machinelograwdata.Parameter27 AS 'YieldPercen', " + 
       " machinelograwdata.Parameter25 AS 'NoPiece', " + 
       " machinelograwdata.Parameter24 AS 'Material', " + 
       " machinelograwdata.Parameter44 AS 'Models', " + 
       " ROUND(machinelograwdata.Parameter9/1000000, 2) AS 'Quantity0Area', " + 
       " '0.00' AS 'Quantity1Area', " + 
       " '0.00' AS 'Quantity2Area' " + 
       " FROM " + 
       " machinelograwdata " + 
       " INNER JOIN catalogue" + 
       " ON machinelograwdata.EventID = catalogue.CatalogueID " + 
       " LEFT JOIN " + 
       " (SELECT MachineID, Parameter1, EndTime, StartTime, UNIX_TIMESTAMP(EndTime) - UNIX_TIMESTAMP(StartTime) AS Duration " + 
       " FROM " + 
       "  (SELECT machinelograwdata.MachineID, machinelograwdata.Parameter1, " + 
       "   MAX(machinelograwdata.EndTime) AS EndTime, " + 
       "   MIN(machinelograwdata.StartTime) AS StartTime " + 
       " FROM " + 
       "  machinelograwdata, catalogue " + 
       " WHERE " + 
       "  machinelograwdata.EventID = catalogue.CatalogueID " + 
       "   AND catalogue.CatalogueGroup = 'EventDesc' " + 
       "   AND StartTime >= '" + strSearchingStartDate + "' " + 
       "   AND StartTime <= '" + strSearchingEndDate + "' " + 
       "   AND EventID = '15' " + 
       "   AND machinelograwdata.Parameter2 = '0' " + 
       " GROUP BY machinelograwdata.Parameter1, machinelograwdata.MachineID) M) Temp " + 
       " ON Temp.Parameter1 = machinelograwdata.Parameter1 " + 
       " AND Temp.MachineID = machinelograwdata.MachineID " + 
       " LEFT JOIN " + 
       " (SELECT MachineID, Parameter1, MIN(StartTime)AS HideStartTime " + 
       " FROM machinelograwdata " + 
       " WHERE EventID = '13' " + 
       "  AND machinelograwdata.StartTime <= '" + strSearchingEndDate + "' " + 
       "  AND machinelograwdata.StartTime >= '" + strSearchingStartDate + "' " + 
       " GROUP BY MachineID, Parameter1) Temp2 " + 
       " ON Temp2.Parameter1 = machinelograwdata.Parameter1 " + 
       " AND Temp2.MachineID = machinelograwdata.MachineID " + 
       " WHERE catalogue.CatalogueGroup = 'EventDesc' " + 
       "  AND machinelograwdata.StartTime <= '" + strSearchingEndDate + "' " + 
       "  AND machinelograwdata.StartTime >= '" + strSearchingStartDate + "' " + 
       "  AND EventID = '14' " + 
       "  AND CONVERT(Parameter35, DECIMAL) <> 0 " + 
       " ORDER BY machinelograwdata.MachineID , machinelograwdata.StartTime; "; 

我的問題是,有可能是我寫的MongoDB用相同的查詢?

並在MongoDB上有「查看」的概念?因爲我有另一個使用View的MySQL報告查詢。

我很感激您是否有任何建議或建議。 謝謝, Thomas

回答

0

MongoDB和MySQL是兩個非常不同的數據庫解決方案。兩者在維護數據方面都遵循不同的方法。 MongoDB沒有SQL數據庫意味着存儲在其中的數據不會與MySQL數據庫中的數據模式綁定。

您無法使用SQL查詢從MongoDB中獲取數據。 MongoDB擁有自己的查詢引擎(由Javascript支持)來獲取數據。

MongoDB不支持概念視圖。

正如你可以從MySQL使用C#MongoDB中加載數據,我會建議檢查MongoDB官方C# drivers在地圖減少操作。

一種方法是獲取內存中的數據,然後生成報告。您可能還會發現一些在線解決方案將SQL查詢映射到Mongo,如this

+0

Hi @ Monk-Who-Code, 謝謝您的建議。 看起來,我將不得不做些功課才能使用MongoDB進行報告。 我想,我在內存中加載MongoDB並處理它。 所以,表現是我應該照顧的。 – ThomasLee

相關問題