【发布时间】:2014-06-07 15:10:45
【问题描述】:
我是 mongodb 和 mongoose 的新手,我试图弄清楚如何进行查询,让我找到字段包含特定字符串的所有记录/文档。这是用于搜索功能。例如,如果我有一个“users”集合,那么我想查找名字以字符串“Jo”开头的所有用户。像这样:
var Users = require('./models/users');
Users.find({ firstname : contains the string 'Jo' }, function(err, user) {
if (err) {
return done(err);
} else {
return res.json({
firstname: user.firstname,
});
}
});
我不确定用什么来代替“包含字符串 'Jo'”,这样这个查询才会起作用。基本上,它应该返回诸如“Joe”、“John”、“Joyce”等记录/文档。
更新===========================================
这是更新后的代码,但它返回所有记录,而不是只返回匹配“str”的记录:
app.get('/search/:str', function(req, res) {
var Users = require('./models/users');
Users.find({name: /[req.params.str]/}, function(err, data) {
if (err) return console.error(err);
return res.json(data);
})
});
问题在于/[req.params.str]/。如果str 设置为“Jo”,那么它应该只返回名称包含字符串“Jo”的用户,但它会返回每条记录。我该如何解决这个问题?
【问题讨论】:
-
可以使用正则表达式进行匹配。不过效率不是很好。