我正在mongo
处理数据库查询,我需要通过定期表达string
字段( fieldToQuery )来查询文档。
数据结构就像
{
fieldToQuery : "4052577300",
someOtherField : "some value",
...
...
}
我的值为"804052577300"
,使用它我必须查询上述文档。
如何使用 $ regex 运算符实现相同功能?
更新
我需要像regex in mongo
那样结束。
答案 0 :(得分:2)
您可以使用fieldToQuery
值创建一个正则表达式的反向正则表达式查询,然后根据查询值对其进行测试:
var value = "804052577300";
db.test.find({
$where: "new RegExp(this.fieldToQuery + '$').test('" + value + "');"
});
$where
运算符允许您针对集合中的每个文档执行任意JavaScript;其中this
是当前文档,表达式的真实结果决定了文档是否应该包含在结果集中。
因此,在这种情况下,会为每个文档的RegExp
字段构建一个新的fieldToQuery
,并在末尾添加$
,以便将搜索锚定到字符串的末尾。然后调用正则表达式的test
方法来测试value
字符串是否与正则表达式匹配。
$where
字符串在服务器端进行评估,因此必须在客户端评估value
的值,方法是将其值直接包含在$where
字符串中。
请注意,$where
查询可能会非常慢,因为它们无法使用索引。
答案 1 :(得分:1)
你可以这样做:
.item-icon-right .icon {
/* right: 11px; */
display: inline-block;
float: right;
}
.item-icon-left .icon, .item-icon-right .icon {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
-moz-align-items: center;
align-items: center;
/* position: absolute; */
/* top: 0; */
height: 100%;
font-size: 32px;
}
上面的正则表达式模式等同于SQL的LIKE操作:
db.collection.find({ fieldToQuery: /4052577300$/})