作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道可以检查字段值是否像这样的字符串:
db.users.findOne({"username" : {$regex : ".*jo*"}});
但我想要的是检查字符串是否包含字段值。
如果我有这样的字符串:"John, Smith, "
,我想匹配用户名为 "John"
和 "Smith"
的用户.
我知道可以拆分字符串并使用 $in
运算符,但想知道是否可以使用字符串比较轻松完成。
最佳答案
如果我正确理解了你的问题,我相信下面的 $regex
就是你想要的。
我的收藏看起来像这样:
/* 1 */
{
"_id" : ObjectId("5a8498a29d1ed018c7f648ca"),
"name" : "John, Smith, "
}
查找和 $regex
看起来像:
db.foo.find({ name: { $regex: 'John.*Smith' } }, { _id : 0 })
如果您需要不区分大小写:
db.foo.find({ name: { $regex: 'john.*smith', $options: 'i'} }, { _id : 0 })
输出:
/* 1 */
{
"name" : "John, Smith, "
}
如果我要运行:
db.foo.find( { name: { $regex: 'Bill.*Smith', $options: 'i' }}, { _id : 0})
或
db.foo.find( { name: { $regex: 'John.*Bill', $options: 'i' } }, { _id : 0})
输出:
Fetched 0 record(s) in 1ms
所以 $regex
只会在 John
和 Smith
在字段中时返回匹配项。
详细说明实际的 $regex
本身:
.
匹配除换行符以外的任何单个字符
*
匹配前面的表达式0次或多次
$option
i
不区分大小写
关于MongoDb 查询 : checking if a string contains field value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48782040/
我是一名优秀的程序员,十分优秀!