小编its*_*oma的帖子

在 MongoDB 中使用 $and 的多个 $regex

我有一些带有下一个记录的集合:

{
    "_id" : ObjectId("52b18fb2a21351b2bb29dfc7"),
    "title" : "aaa"
}
{
    "_id" : ObjectId("52b18fd0d17d7f69e078f7b7"),
    "title" : "bbb"
}
{
    "_id" : ObjectId("52b18fd3d17d7f69e078f7b8"),
    "title" : "ccc"
}
Run Code Online (Sandbox Code Playgroud)

下一个查询给出了我们预期的 1 条记录(标题为“aaa”):

db.test.find({
     {title:{$regex:'aaa'}}
})
Run Code Online (Sandbox Code Playgroud)

但是当我们对 $ 使用复杂条件时,我们得到了一些意想不到的东西:

db.test.find({
    $and: [
        {title:{$regex:'aaa'}},
        {title:{$regex:'bbb'}}
    ]
})
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要完全查询,因为我将使用带有停用词的选择,例如:

db.test.find({
    $and: [
        {title:{$regex:'aaa'}},
        {title:{$regex:'bbb'}},
        {title:{$not:/bbb/i}},
    ]
})
Run Code Online (Sandbox Code Playgroud)

使用上面的查询,我期望结果中只有一个字段(标题 =“aaa”)。

我知道如何使用聚合解决这个问题,但我希望有另一种方法来解决它。

谢谢!

regex sql mongodb

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

mongodb ×1

regex ×1

sql ×1