2015-07-02 96 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>"); 

}

相关问题