我在Node.JS和Express框架中有点新,我的代码有一个很大的问题:
app.get('/student', function(req, res) {
var dbRequest = 'SELECT * FROM Students WHERE IDCard = \'' + req.query['id'] + '\'';
db.all(dbRequest, function(error, rows) {
if(rows.length !== 0) {
/* Save data. */
}
else
res.render('incorrect_student'); /* Render the error page. */
});
dbRequest = 'SELECT * FROM Groups WHERE Name = \'' + req.query['group'] + '\'';
db.all(dbRequest, function(error, rows) {
/* Add selected data to previous saved data. */
}
});
res.render('student', {data: /* data from both queries above */}); …Run Code Online (Sandbox Code Playgroud) 我在使用Java API for MongoDB时遇到问题.我使用Robomongo创建了一个查询:
db.collection.find(
{$text : {$search : "\"expression\" keyword"}},
{score : {$meta : "textScore"}}
).sort({score : {$meta : "textScore"}})
Run Code Online (Sandbox Code Playgroud)
现在我想使用Java API创建相同的查询:
DBObject searchCommand = new BasicDBObject(
"$text", new BasicDBObject("$search", "\"expression\" keyword")
).append(
"score", new BasicDBObject("'$meta'", "textScore")
);
DBObject sorting = new BasicDBObject(
"score", new BasicDBObject("'$meta'", "textScore")
);
DBCursor result = collection.find(searchCommand).sort(sorting);
Run Code Online (Sandbox Code Playgroud)
问题是这段代码不起作用.查询:
DBObject searchCommand = new BasicDBObject(
"$text", new BasicDBObject("$search", "\"expression\" keyword")
);
Run Code Online (Sandbox Code Playgroud)
工作得很好.在追加第二部分之后,所有结果都变得不可见.更重要的是,这一行:
DBCursor result = collection.find(searchCommand).sort(sorting);
Run Code Online (Sandbox Code Playgroud)
抛出MongoException(BadValue错误的排序规范).当我删除sort()方法调用时,Exception不存在,但我仍然没有任何结果(如果我追加"得分").
我找到了解决这个问题的方法,但是使用了Spring.我不想使用任何其他库.另外,我是MongoDB的初学者.谢谢你的帮助和时间,欢呼.
UPDATE.问题解决了.将"score"附加到查询searchCommand作为find()的第一个参数传递是错误的."得分"应作为find()方法的第二个参数在单独的DBObject中传递,如下所示:
DBObject search = new BasicDBObject(
"$text", new …Run Code Online (Sandbox Code Playgroud)