如何查找包含数组元素之一的字段?

时间:2017-11-21 07:33:54

标签: python mongodb

查找包含如下字符串的字段很容易:

db.users.findOne({"username" : {$regex : ".*son.*"}});

我想知道是否有办法以这种方式检查所有数组元素? 例如:

s = ['one', 'two', 'three']
db.users.findOne({"username" : {$regex : ".*s.*"}});

2 个答案:

答案 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}})