如何使用“like”查询MongoDB

How to query MongoDB with "like"

提问人:Freewind 提问时间:7/22/2010 最后编辑:Peter MortensenFreewind 更新时间:11/11/2023 访问量:1702584

问:

我想用SQL的查询查询一些东西:like

SELECT * FROM users  WHERE name LIKE '%m%'

如何在MongoDB中实现相同的目标?我在文档中找不到运算符。like

sql mongodb mongodb-query 类 SQL

评论

11赞 douyw 11/22/2011
请参阅 mongodb 的文档:高级查询 -- 正则表达式 mongodb.org/display/DOCS/...
2赞 Nice-Guy 3/19/2022
我真的建议看看 MongoDB Atlas Search,因为它对于类似“喜欢”的查询来说资源效率更高且功能更丰富,或者$text$regex

答:

73赞 Joshua Partogi 7/22/2010 #1

您将在 MongoDB 中使用正则表达式。

例如

db.users.find({"name": /^m/})

评论

35赞 JackAce 7/17/2014
我认为这只显示名称值以“m”开头的文档
1赞 ethanjyx 2/11/2022
使用正则表达式时删除引号很重要,即不要做“/^m/”,只做 /^m/
2499赞 Kyle H 7/22/2010 #2

那必须是:

db.users.find({"name": /.*m.*/})

或者,类似:

db.users.find({"name": /m/})

您正在寻找某处包含“m”的东西(SQL 的 '' 运算符等同于正则表达式的 ''),而不是将“m”锚定在字符串开头的东西。%.*

注意:MongoDB使用正则表达式(参见文档),这些表达式比SQL中的“LIKE”更强大。使用正则表达式,您可以创建您想象的任何模式。

有关正则表达式的更多信息,请参阅正则表达式 (MDN)。

评论

140赞 Freewind 7/22/2010
按正则表达式搜索贵吗?
175赞 Kyle Banker 7/22/2010
实际上,这要视情况而定。如果查询不使用索引,并且必须执行表扫描,那么它肯定会很昂贵。如果您正在执行“开头为”正则表达式查询,则可以使用索引。最好运行 explain() 来查看发生了什么。
43赞 Emily 7/27/2010
当不锚定到字符串的开头时,它有点昂贵。但话又说回来,SQL 中的查询也是如此。LIKE
61赞 Doron Segal 6/19/2015
我会添加正则表达式 ijavascript db.users.find({ "name": { $regex: /m/i } })
8赞 Ivan Cabrera 7/31/2021
值得一提的是,如果您想从 Node 应用程序中使用它并且想要动态搜索,您可以使用: 因此,这样您就可以将其与其他运算符(如 $in、$nin 等)一起使用。users.find({"name": new RegExp('.*' + searchVariable + '.*')})
107赞 Leon 5/13/2011 #3

在 PHP 中,您可以使用以下代码:

$collection->find(array('name'=> array('$regex' => 'm'));

评论

0赞 Diego Lope Loyola 10/13/2022
您还可以在 $regex 数组的第二项中指定标志,如下所示:$collection->find(array('name'=> array('$regex' => 'm', '$options => 'i'));
383赞 Afshin Mehrabani 10/8/2012 #4

  • 使用 Python 的 PyMongo
  • 使用 Node.js猫鼬
  • Jongo,使用 Java
  • mgo, 使用 Go

您可以执行以下操作:

db.users.find({'name': {'$regex': 'sometext'}})

评论

94赞 sumowrestler 7/14/2017
@TahirYasin,如果您仍然想知道,不区分大小写的搜索将像这样完成:db.users.find({'name': {'$regex': 'sometext', '$options': 'i'}})
1赞 Revol89 10/4/2021
这适用于整个单词,而不是单词的一部分。
14赞 briba 9/5/2013 #5

您可以使用 where 语句来构建任何 JavaScript 脚本:

db.myCollection.find( { $where: "this.name.toLowerCase().indexOf('m') >= 0" } );

参考: $where

评论

10赞 Sushant Gupta 9/23/2013
$where效率非常低下。:(进行全集合扫描
46赞 Eddy 3/9/2014 #6

如果使用 Node.js它说你可以这样写:

db.collection.find( { field: /acme.*corp/i } );

// Or
db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );

另外,你可以这样写:

db.collection.find( { field: new RegExp('acme.*corp', 'i') } );

评论

0赞 Nuri Engin 9/25/2021
谢谢@Eddy。为'$options: 'i''提供正则表达式使重构过程对我来说变得容易。
12赞 user2312578 3/18/2014 #7

在 Go 和 mgo 驱动程序中:

Collection.Find(bson.M{"name": bson.RegEx{"m", ""}}).All(&result)

其中 result 是 sought-after 类型的 struct 实例。

评论

2赞 bithavoc 11/14/2016
请避免在文字中使用未键的字段,而是这样做bson:RegEx{Pattern:"m", Options:"i"}
12赞 MADHAIYAN M 3/19/2014 #8

在 SQL 中,“like”查询如下所示:

select * from users where name like '%m%'

在 MongoDB 控制台中,它如下所示:

db.users.find({"name": /m/})     // Not JSON formatted

db.users.find({"name": /m/}).pretty()  // JSON formatted

此外,该方法将在所有位置生成更具可读性的格式化 JSON 结构。pretty()

634赞 Johnathan Douglas 5/20/2014 #9
db.users.insert({name: 'patrick'})
db.users.insert({name: 'petra'})
db.users.insert({name: 'pedro'})

因此:

为:

db.users.find({name: /a/})  // Like '%a%'

输出: patrick, petra

为:

db.users.find({name: /^pa/}) // Like 'pa%'

输出:patrick

为:

db.users.find({name: /ro$/}) // Like '%ro'

输出: pedro

评论

11赞 Cristian E. 9/22/2021
你知道为什么你有这么多的赞成票吗?因为这些文档应该得到同样多的反对票!谢谢
0赞 Akaisteph7 8/3/2022
要搜索带有正斜杠的字符串,只需像这样转义它:db.users.find({name: /^path\/to\/something/}) // Like 'path/to/something%'
0赞 Danielle 2/20/2023
性能方面,$regex不是最好的方法......
16赞 cmarrero01 8/5/2014 #10

您可以使用 MongoDB 2.6 的新功能:

db.foo.insert({desc: "This is a string with text"});
db.foo.insert({desc:"This is a another string with Text"});
db.foo.ensureIndex({"desc":"text"});
db.foo.find({
    $text:{
        $search:"text"
    }
});

评论

8赞 rocketmonkeys 3/11/2015
请注意,默认情况下,AFAIK Mongodb 的文本搜索仅适用于整个单词,因此这将匹配“This is a string with text”之类的值,但不匹配“This is a string with subtext”等值。所以它不太像 sql 的“LIKE”运算符。
12赞 Dap 9/18/2014 #11

对于PHP mongo喜欢

我在 PHP mongo 上遇到了几个问题,比如。我发现在某些情况下连接正则表达式参数会有所帮助 - PHP mongo find 字段以开头

例如

db()->users->insert(['name' => 'john']);
db()->users->insert(['name' => 'joe']);
db()->users->insert(['name' => 'jason']);

// starts with
$like_var = 'jo';
$prefix = '/^';
$suffix = '/';
$name = $prefix . $like_var . $suffix;
db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);
output: (joe, john)

// contains
$like_var = 'j';
$prefix = '/';
$suffix = '/';
$name = $prefix . $like_var . $suffix;
db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);

output: (joe, john, jason)
31赞 The6thSense 11/21/2014 #12

您已经得到了答案,但要与不区分大小写的正则表达式匹配,可以使用以下查询:

db.users.find ({ "name" : /m/i } ).pretty()

in 表示不区分大小写,并提供更漂亮的输出。i/m/i.pretty()

5赞 Vaibhav 4/28/2015 #13

如果你使用的是 Spring-Data MongoDB,你可以这样做:

String tagName = "m";
Query query = new Query();
query.limit(10);
query.addCriteria(Criteria.where("tagName").regex(tagName));
6赞 prayagupa 5/18/2015 #14

类似的查询如下所示:

db.movies.find({title: /.*Twelve Monkeys.*/}).sort({regularizedCorRelation : 1}).limit(10);

对于 Scala ReactiveMongo API,

val query = BSONDocument("title" -> BSONRegex(".*" + name + ".*", "")) // like
val sortQ = BSONDocument("regularizedCorRelation" -> BSONInteger(1))
val cursor = collection.find(query).sort(sortQ).options(QueryOpts().batchSize(10)).cursor[BSONDocument]
15赞 Shaishab Roy 8/11/2015 #15

Node.js 项目中并使用 Mongoose,使用类似的查询:

var User = mongoose.model('User');

var searchQuery = {};
searchQuery.email = req.query.email;
searchQuery.name = {$regex: req.query.name, $options: 'i'};
User.find(searchQuery, function(error, user) {
                if(error || user === null) {
                    return res.status(500).send(error);
                }
                return res.status(200).send(user);
            });
24赞 Aqib Mumtaz 11/10/2015 #16

对于 Node.js 中的猫鼬

db.users.find({'name': {'$regex': '.*sometext.*'}})
8赞 Shalabh Raizada 12/11/2015 #17

使用正则表达式匹配,如下所示。“i”表示不区分大小写。

var collections = mongoDatabase.GetCollection("Abcd");

var queryA = Query.And(
         Query.Matches("strName", new BsonRegularExpression("ABCD", "i")), 
         Query.Matches("strVal", new BsonRegularExpression("4121", "i")));

var queryB = Query.Or(
       Query.Matches("strName", new BsonRegularExpression("ABCD","i")),
       Query.Matches("strVal", new BsonRegularExpression("33156", "i")));

var getA = collections.Find(queryA);
var getB = collections.Find(queryB);
3赞 sravanthi 1/19/2016 #18

由于 MongoDB shell 支持正则表达式,这是完全可能的。

db.users.findOne({"name" : /.*sometext.*/});

如果我们希望查询不区分大小写,我们可以使用“i”选项,如下所示:

db.users.findOne({"name" : /.*sometext.*/i});
104赞 Somnath Muluk 8/11/2016 #19

以下是使用正则表达式进行字符串搜索的不同类型的要求和解决方案。

您可以使用包含单词的正则表达式,即 like。此外,您还可以用于不区分大小写的搜索。$options => i

包含string

db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})

不包含 ,仅包含正则表达式string

db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})

完全不区分大小写string

db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})

入手string

db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})

结尾为string

db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})

正则表达式备忘单保留为书签,并作为您可能需要的任何其他更改的参考。

评论

0赞 Irfan Habib 8/26/2021
这是后面的评论,但是,我如何在上面的示例中使用变量?比如 let name = 'John Doe' 。如何在正则表达式中实现名称变量?谢谢
4赞 jarry jafery 8/23/2016 #20

如果你想在MongoDB中进行“喜欢”搜索,那么你应该选择$regex。通过使用它,查询将是:

db.product.find({name:{$regex:/m/i}})

有关更多信息,您也可以阅读文档 - $regex

2赞 Lakmal Vithanage 12/6/2016 #21

我找到了一个免费工具可以将MySQL查询转换为MongoDB:http://www.querymongo.com/

我检查了几个查询。在我看来,几乎所有的人都是正确的。据此,答案是

db.users.find({
    "name": "%m%"
});
7赞 Bruno Bronosky 1/11/2017 #22

似乎有理由同时使用JavaScript模式和MongoDB模式。请参见: MongoDB RegEx 语法限制/regex_pattern/{'$regex': 'regex_pattern'}

这不是一个完整的正则表达式教程,但在看到上面一篇投票率很高的模棱两可的帖子后,我受到启发运行这些测试。

> ['abbbb','bbabb','bbbba'].forEach(function(v){db.test_collection.insert({val: v})})

> db.test_collection.find({val: /a/})
{ "val" : "abbbb" }
{ "val" : "bbabb" }
{ "val" : "bbbba" }

> db.test_collection.find({val: /.*a.*/})
{ "val" : "abbbb" }
{ "val" : "bbabb" }
{ "val" : "bbbba" }

> db.test_collection.find({val: /.+a.+/})
{ "val" : "bbabb" }

> db.test_collection.find({val: /^a/})
{ "val" : "abbbb" }

> db.test_collection.find({val: /a$/})
{ "val" : "bbbba" }

> db.test_collection.find({val: {'$regex': 'a$'}})
{ "val" : "bbbba" }
3赞 Albert S 1/28/2017 #23

MongoRegex 已被弃用。

使用 MongoDB\BSON\Regex

$regex = new MongoDB\BSON\Regex ( '^m');
$cursor = $collection->find(array('users' => $regex));
//iterate through the cursor
1赞 CEDA 2/16/2017 #24

如果你使用的是 PHP,你可以使用MongoDB_DataObject包装器,如下所示:

$model = new MongoDB_DataObject();

$model->query("select * from users where name like '%m%'");

while($model->fetch()) {
    var_dump($model);
}

或者

$model = new MongoDB_DataObject('users);

$model->whereAdd("name like '%m%'");

$model->find();

while($model->fetch()) {
    var_dump($model);
}
18赞 damd 4/19/2017 #25

使用 MongoDB Compass 时,您需要使用严格模式语法,如下所示:

{ "text": { "$regex": "^Foo.*", "$options": "i" } }

(在 MongoDB Compass 中,重要的是使用 而不是"')

评论

1赞 zerodoc 1/3/2023
这几乎让我发疯了,非常感谢,为什么他们不能提供关于为 Compass 做这样的事情的文档或示例。我什至找不到有关 Compass 严格模式语法的文档。
57赞 alvescleiton 4/26/2017 #26

您有两种选择:

db.users.find({"name": /string/})

db.users.find({"name": {"$regex": "string", "$options": "i"}})

对于第二个,您有更多选项,例如选项中的“i”来查找不区分大小写。

关于“字符串”,您可以使用“.字符串。(%string%),或“string.*”(string%)和“.*string)(%string)”,例如。您可以根据需要使用正则表达式。

1赞 Shubham Verma 5/6/2017 #27

全名,如“last”,状态==“待定”在两个日期之间:

db.orders.find({
      createdAt:{$gt:ISODate("2017-04-25T10:08:16.111Z"),
      $lt:ISODate("2017-05-05T10:08:16.111Z")},
      status:"Pending",
      fullName:/last/}).pretty();

status== 'Pending' 和 orderId LIKE 'PHA876174':

db.orders.find({
     status:"Pending",
     orderId:/PHA876174/
     }).pretty();
3赞 priya raj 6/2/2017 #28

用:

db.customer.find({"customerid": {"$regex": "CU_00000*", "$options": "i"}}).pretty()

当我们搜索字符串模式时,最好使用上述模式,因为当我们不确定大小写时。

0赞 Dinesh vishe 10/15/2017 #29
>> db.car.distinct('name')
[ "honda", "tat", "tata", "tata3" ]

>> db.car.find({"name":/. *ta.* /})

评论

2赞 kvantour 3/12/2019
哇,这可能是一个惊人的答案。想详细说明一下吗?
1赞 Jordan Stefanelli 4/9/2019
使用您的解决方案来回答问题中给定的示例。不要创建一个看似功能重叠的随机场景,并期望它看起来很清晰。
4赞 kz_sergey 1/4/2018 #30

使用聚合子字符串搜索(带索引!!):

db.collection.aggregate([{
        $project : {
            fieldExists : {
                $indexOfBytes : ['$field', 'string']
            }
        }
    }, {
        $match : {
            fieldExists : {
                $gt : -1
            }
        }
    }, {
        $limit : 5
    }
]);

评论

0赞 tcurdt 8/4/2021
这可能仍然比所有这些正则表达式建议更好 - 但它仍然执行 colscan。
10赞 Ikhlak S. 5/16/2018 #31

正则表达式的处理成本很高。

另一种方法是创建文本索引,然后使用 .$search

创建要设置为可搜索字段的文本索引

db.collection.createIndex({name: 'text', otherField: 'text'});

在文本索引中搜索字符串:

db.collection.find({
  '$text'=>{'$search': "The string"}
})

评论

0赞 Oliver Dixon 5/10/2022
这不适用于部分。
11赞 besthost 6/8/2018 #32

将模板文字与变量一起使用也有效:

{"firstname": {$regex : `^${req.body.firstname}.*` , $options: 'si' }}

评论

0赞 Marnix 11/11/2022
这是行不通的。输入带有特殊字符的名称(例如)失败。(
0赞 besthost 11/13/2022
这些变量名称是否有效?或者你的意思是:req.body.firstname = “John(Jimmy) Doe”?
0赞 Marnix 11/23/2022
第二个是的。
0赞 saim2025 7/7/2018 #33

您还可以按如下方式使用通配符筛选器:

{"query": { "wildcard": {"lookup_field":"search_string*"}}}

请务必使用 .*

13赞 user6628772 7/30/2019 #34

字符串 yourdb={deepakparmar, dipak, parmar}

db.getCollection('yourdb').find({"name":/^dee/})

Ans迪帕克帕尔马

db.getCollection('yourdb').find({"name":/d/})

Ans Deepakparmar, 迪帕克

db.getCollection('yourdb').find({"name":/mar$/})

Ans Deepakparmar, 帕尔马

4赞 Ezequias Dinella 4/1/2020 #35

您可以使用正则表达式进行查询:

db.users.find({"name": /m/});

如果字符串来自用户,您可能希望在使用字符串之前对字符串进行转义。这将防止用户的文字字符被解释为正则表达式标记。

例如,搜索字符串“A”。也会匹配“AB”,如果没有转义。 在使用字符串之前,您可以使用 simple 来转义字符串。我把它做成一个重用的函数:replace

function textLike(str) {
  var escaped = str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
  return new RegExp(escaped, 'i');
}

所以现在,字符串变成了一个不区分大小写的模式,也与文字点匹配。例:

>  textLike('A.');
<  /A\./i

现在,我们已准备好随时随地生成正则表达式:

db.users.find({ "name": textLike("m") });
0赞 KayV 4/23/2020 #36

以下是使用“开头为”范式的命令:

db.customer.find({"customer_name" : { $regex : /^startswith/ }})
5赞 Lazaro Fernandes Lima Suleiman 5/26/2020 #37

如果你有一个字符串变量,你必须将其转换为正则表达式,因此MongoDB将在其上使用like语句。

const name = req.query.title; //John
db.users.find({ "name": new Regex(name) });

结果与以下结果相同:

db.users.find({"name": /John/})
3赞 ajay_full_stack 7/23/2020 #38

有多种方法可以实现此目的。

最简单的一个:

db.users.find({"name": /m/})

{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: { $regex: 'pattern', $options: '<options>' } }
{ <field>: { $regex: /pattern/<options> } }

db.users.find({ "name": { $regex: "m"} })

更多细节可以在$regex中找到。

5赞 waseem khan 8/20/2020 #39

查找结果的一种方法与类似查询相同:

db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})

其中 i 用于不区分大小写的获取数据。

我们也可以得到结果的另一种方式:

db.collection.find({"name":/aus/})

以上将提供在包含 aus 的名称中包含 aus 的结果。

0赞 Binita Bharati 1/14/2021 #40

以防万一,有人正在寻找一种类似 SQL 的查询来查询包含字符串数组而不是字符串的键,这里是:

db.users.find({"name": {$in: [/.*m.*/]}})
0赞 Priyanka Wagh 2/11/2021 #41

前面的答案完美地回答了有关核心MongoDB查询的问题。但是,当使用基于模式的搜索查询时,例如:

{“keywords”:{ “$regex”: “^toron.*”}}

{“keywords”:{ “$regex”: “^toron”}}

在带有@Query注释的 Spring Boot JPA 存储库查询中,使用如下查询:

@Query(value = "{ keyword : { $regex : ?0 }  }")
List<SomeResponse> findByKeywordContainingRegex(String keyword);

调用应为以下任一:

List<SomeResponse> someResponseList =    someRepository.findByKeywordsContainingRegex("^toron");

List<SomeResponse> someResponseList =    someRepository.findByKeywordsContainingRegex("^toron.*");

切勿使用:

List<SomeResponse> someResponseList = someRepository.findByKeywordsContainingRegex("/^toron/");

List<SomeResponse> someResponseList =someRepository.findByKeywordsContainingRegex("/^toron.*/");

需要注意的重要一点是:每次将语句中的 ?0 字段替换为双引号字符串@Query。因此,在这些情况下不应使用正斜杠 (/)!在搜索模式中始终使用双引号来寻找模式!!例如,使用"^toron" or "^toron.*"/^toron/ or /^toron.*/

评论

0赞 Priyanka Wagh 2/11/2021
欲了解更多详情,请点击以下链接: docs.mongodb.com/manual/reference/operator/query/regex/...
3赞 turivishal 2/27/2021 #42

使用 JavaScript 正则表达式

  • 按空格拆分字符串并组成一个单词数组name
  • 映射到迭代循环,并将字符串转换为名称中每个单词的正则表达式

let name = "My Name".split(" ").map(n => new RegExp(n));
console.log(name);

结果:

[/My/, /Name/]

有两种方案可以匹配字符串,

  1. $in(类似于$or条件)

尝试$in表达式。若要在查询表达式中包含正则表达式,只能使用 JavaScript 正则表达式对象(即 )。例如:$in/pattern/

db.users.find({ name: { $in: name } }); // name = [/My/, /Name/]
  1. $all(类似于$and条件)文档应包含所有单词
db.users.find({ name: { $all: name } }); // name = [/My/, /Name/]

使用嵌套和条件,以及$and$or$regex

有两种方案可以匹配字符串,

  1. $or(类似于$in条件)
db.users.find({
  $or: [
    { name: { $regex: "My" } },
    { name: { $regex: "Name" } }
    // if you have multiple fields for search then repeat same block
  ]
})

操场

  1. $and(类似于$all条件)文档应包含所有单词
db.users.find({
  $and: [
    {
      $and: [
        { name: { $regex: "My" } },
        { name: { $regex: "Name" } }
      ]
    }
    // if you have multiple fields for search then repeat same block
  ]
})

操场

4赞 Shubham Kakkar 3/9/2021 #43

用:

const indexSearch = await UserModel.find(
      { $text: { $search: filter } },
    );

    if (indexSearch.length) {
      return indexSearch;
    }
    return UserModel.find(
      {
        $or: [
          { firstName: { $regex: `^${filter}`, $options: 'i' } },
          { lastName: { $regex: `^${filter}`, $options: 'i' } },
          { middleName: { $regex: `^${filter}`, $options: 'i' } },
          { email: { $regex: `^${filter}`, $options: 'i' } },
        ],
      },
    );

我使用了正则表达式和“索引”的组合。

2赞 g10guang 3/9/2021 #44

对于 Go 驱动程序:

filter := bson.M{
    "field_name": primitive.Regex{
        Pattern: keyword,
        Options: "",
    },
}
cursor, err := GetCollection().Find(ctx, filter)

在$in查询中使用正则表达式(MongoDB文档:$in):

filter := bson.M{
    "field_name": bson.M{
        "$in": []primitive.Regex{
            {
                Pattern: keyword,
                Options: "",
            },
        }
    }
}
cursor, err := GetCollection().Find(ctx, filter)
19赞 Sahil Thummar 2/16/2022 #45

在MongoDb中,可以使用像使用MongoDb引用运算符正则表达式(regex)一样。

对于相同的前任。

MySQL - SELECT * FROM users  WHERE name LIKE '%m%'

MongoDb

    1) db.users.find({ "name": { "$regex": "m", "$options": "i" } })

    2) db.users.find({ "name": { $regex: new RegExp("m", 'i') } })

    3) db.users.find({ "name": { $regex:/m/i } })

    4) db.users.find({ "name": /mail/ })

    5) db.users.find({ "name": /.*m.*/ })

MySQL - SELECT * FROM users  WHERE name LIKE 'm%'

MongoDb Any of Above with /^String/

    6) db.users.find({ "name": /^m/ })

MySQL - SELECT * FROM users  WHERE name LIKE '%m'

MongoDb Any of Above with /String$/

    7) db.users.find({ "name": /m$/ })

评论

0赞 Oliver Dixon 5/10/2022
仅供参考,它在大型数据集上变得非常慢。而且没有办法知道分数是多少。
3赞 Sahil Patel 6/29/2023 #46

如果你想使用像 mongo JPA 这样的查询,你应该试试这个。

@Query("{ 'title' : { $regex: '^?0', $options: 'i' } }")
List<TestDocument> findLikeTitle(String title);
0赞 Kerem Atasen 9/22/2023 #47

它也有效:

db.getCollection('collection_name').find({"field_name": /^searched_value/})