2015-07-02 92 views
2

我有一個大的mongoDB數據庫設置,並試圖創建一個網站,用戶可以使用搜索欄遠程查詢數據庫並在網站上發佈結果(嚴格爲只讀)。如何使用搜索欄創建一個網站來查詢mongo數據庫?

我有用於數據分析的數據庫經驗,但從未創建過查詢結果的網站。

我對web開發沒有任何經驗,也不知道使用什麼平臺(PHP?node.js?)。

在此先感謝。

回答

2

有下列步驟的問題:

  1. 創建前端,其中將包括HTML,CSS和Javascript。初學者經常發現使用jQuery和jQuery UI最容易,因爲它們有很好的文檔記錄,並且包含幾乎所有可能場景的插件(但它們不應該用於創建大型複雜應用程序!)。 Bootstrap或Foundation可以幫助您使用HTML/CSS。
  2. 創建一個(可能)JSON API,它的前端可以溝通來提交搜索和檢索結果。您可以使用PHP,Python,Ruby或許多其他語言來執行此操作。對於一個簡單的網站,比如你所描述的網站,這比其他任何事情都更重要。
  3. 翻譯從前端到MongoDB的查詢API的搜索請求,並通過API返回的結果。您將使用與您選擇的任何語言兼容的MongoDB客戶端庫。

根據您的需要,您可以通過使用現有的REST API for MongoDB來消除(2)。

請注意,如果您只是想通過搜索/製圖來訪問MongoDB數據,那麼您可以通過利用SlamData這個我貢獻的開源項目完全避免編碼。 SlamData允許您使用Google風格的搜索(或更高級的SQL)來查詢MongoDB並以表格或圖表形式返回結果。

+0

我看了看SlamData,它看起來很有趣。它主要是管理員/網站管理工具,還是可以輕鬆修改前端用戶使用情況? – SLee

+0

它主要面向前端用戶,儘管您可以將其用於light admin(它不具備修改數據的能力,因此對於最終用戶比管理員更好)。 –

1

我在nodejs中這樣做。

在我的服務器端應用程序,我必須通過mognoose像連接:

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://yourhost/database'); 

接下來你需要有你的模型數據庫

var YourDBVarName = mongoose.model('collectionName', { 
    yourfields1 : type, 
    yourfields2 : type, 
    yourfields3 : type 
    ... 
}); 

然後我讓得到它

var express = require('express'); 
var app = express(); 
app.get('/dblisting', function(req,res){ 
    YourDBVarName.find({ yourfieldsX: 'value'}, function(err, data) { 
     if(err) { 
     res.send(err.message); 
     } 
     else{ 
     res.send(data); 
     }); 
}); 

然後,您只需使用$ .ajax進行一些GET到yournodeserver.com/dblisting,然後在您回覆您的請求按照

{ yourfieldsX: 'value'} 

您可能只是{}而已,因此您可以獲取所有存儲的數據。

+1

哦,而且你應該通過用戶授權來保護它。也可以做類似的用戶集合上方,然後使用表達會話連接+ - 蒙戈+餅乾,解析:)這個信息足以google吧:) –

1

SLee 如果你想知道從mongoDB中獲取數據,你可以使用我的github https://github.com/parthaindia/CustomMongo。使用getByCondition()方法,它需要集合名稱和一個Map。該映射可以是您的鍵值對的形式查詢,鍵是列的名稱。我爲Web開發編寫搜索查詢時使用此方法。 Java代碼給你一個Json。編寫一個Servlet將您的Json發佈到WEB用戶界面。

這是一個示例,顯示如何使用Js發佈檢索到的數據,「server_base_url +/server/FetchData」將是您的服務URL。您必須將數據附加到表中。或跨度,取決於你真正want.The下面的代碼將數據追加

功能的GetData(){

$.get(server_base_url + "/server/FetchData", { 
}).done(function (data) { 
    $.each(data, function (index, value) { 
     alert("The Index" + index + "The Value" + value); 
      $("#11table1").append("<tr><td id='dynamicid1" + index + "'>" + value + "</td></tr>"); 
    }); 

}); 

}

此功能可用於定義表

功能defineTable(){

$("#mainDivID").text("").append("<div id='contpanel' class='contentpanel'>"); 
$("#contpanel").append("<div id='rowid11' class='row'>"); 
$("#rowid11").text("").append("<div id='row11table1' class='col-md-12'>"); 
$("#row11table1").text("").append('<br /><br /><center><h5 class="lg-title mb5" style="background-color:#428BCA;height:20px;color:#fff;padding-top:4px;"><b>Heading</b></h5></center>'); 
$("#row11table1").append("<div id='table11id1' class='table-responsive'>"); 
$("#table11id1").append("<table id='11table1' class='table table table-bordered mb30' >"); 
$("#11table1").append("<thead><tr><th>Index</th><th>Value</th></tr></thead>"); 

}

相關問題