首先,使用以下命令安装必要的软件包:
npm install express cors mongoose
然后,将依赖项添加到server.js,创建数据库模式和集合名称,创建Express.js服务器,并连接到MongoDB:
var express = require('express');
var cors = require('cors'); // 我们将使用CORS启用跨源域请求。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var app = express();
var schemaName = new Schema({
request: String,
time: Number
}, {
collection: 'collectionName'
});
var Model = mongoose.model('Model', schemaName);
mongoose.connect('mongodb://localhost:27017/dbName');
var port = process.env.PORT || 8080;
app.listen(port, function() {
console.log('Node.js listening on port ' + port);
});现在添加Express.js用于查询数据的路由:
app.get('/find/:query', cors(), function(req, res) {
var query = req.params.query;
Model.find({
'request': query
}, function(err, result) {
if (err) throw err;
if (result) {
res.json(result)
} else {
res.send(JSON.stringify({
error : 'Error'
}))
}
})
})假设以下文档在模型的集合中:
{
"_id" : ObjectId("578abe97522ad414b8eeb55a"),
"request" : "JavaScript is Awesome",
"time" : 1468710551
}
{
"_id" : ObjectId("578abe9b522ad414b8eeb55b"),
"request" : "JavaScript is Awesome",
"time" : 1468710555
}
{
"_id" : ObjectId("578abea0522ad414b8eeb55c"),
"request" : "JavaScript is Awesome",
"time" : 1468710560
}目标是查找并显示"JavaScript"在"request"键下仅包含单词的所有文档。
要做到这一点,首先创建一个文本索引用于"request"收藏。为此,将以下代码添加到server.js:
schemaName.index({ request: 'text' });并替换:
Model.find({
'request': query
}, function(err, result) {带有:
Model.find({
$text: {
$search: query
}
}, function(err, result) {在这里,我们使用$text和$searchMongoDB运算符来查找集合collectionName中的所有文档,这些文档至少包含来自指定查找查询的一个单词。
要使用它来查找数据,请在浏览器中转到以下URL:
http://localhost:8080/find/<query>
<query>搜索查询在哪里。
例:
http://localhost:8080/find/JavaScript
输出:
[{
_id: "578abe97522ad414b8eeb55a",
request: "JavaScript is Awesome",
time: 1468710551,
__v: 0
},
{
_id: "578abe9b522ad414b8eeb55b",
request: "JavaScript is Awesome",
time: 1468710555,
__v: 0
},
{
_id: "578abea0522ad414b8eeb55c",
request: "JavaScript is Awesome",
time: 1468710560,
__v: 0
}]