查找包含如下字符串的字段很容易:
db.users.findOne({"username" : {$regex : ".*son.*"}});
我想知道是否有办法以这种方式检查所有数组元素? 例如:
s = ['one', 'two', 'three']
db.users.findOne({"username" : {$regex : ".*s.*"}});
答案 0 :(得分:3)
您可以使用正则表达式的原生OR
(|
)条件。
示例:
s = ['one', 'two', 'three'];
db.users.findOne({"username" : {$regex: ".*(" + '|'.join(s) + ").*"}});
答案 1 :(得分:1)
你可以尝试这个。首先,您可以为s生成regex
数组,然后可以将该新数组与$in
运算符一起使用。像贝娄一样
var s = ['one', 'two', 'three'];
s = s.map(function (elm) { return new RegExp(elm, "i"); });
db.users.findOne({username:{$in: s}})