我想用SQL查询一些东西,比如查询:
SELECT * FROM users WHERE name LIKE '%m%'
如何在MongoDB中实现这一点?我在文档中找不到这样的操作员。
我想用SQL查询一些东西,比如查询:
SELECT * FROM users WHERE name LIKE '%m%'
如何在MongoDB中实现这一点?我在文档中找不到这样的操作员。
当前回答
以下是使用“从”范例的命令:
db.customer.find({"customer_name" : { $regex : /^startswith/ }})
其他回答
您可以使用MongoDB 2.6的新功能:
db.foo.insert({desc: "This is a string with text"});
db.foo.insert({desc:"This is a another string with Text"});
db.foo.ensureIndex({"desc":"text"});
db.foo.find({
$text:{
$search:"text"
}
});
如果您有字符串变量,则必须将其转换为正则表达式,因此MongoDB将对其使用类似的语句。
const name = req.query.title; //John
db.users.find({ "name": new Regex(name) });
结果与:
db.users.find({"name": /John/})
使用聚合子字符串搜索(带索引!!!):
db.collection.aggregate([{
$project : {
fieldExists : {
$indexOfBytes : ['$field', 'string']
}
}
}, {
$match : {
fieldExists : {
$gt : -1
}
}
}, {
$limit : 5
}
]);
对于Node.js中的Mongoose:
db.users.find({'name': {'$regex': '.*sometext.*'}})
为了以防万一,有人正在寻找一种SQL LIKE类型的查询,以查找包含字符串数组而不是字符串的键,这里是:
db.users.find({"name": {$in: [/.*m.*/]}})