MongoDB:如何检查字段是否包含一个字符串

4,949 阅读1分钟

你可以在MongoDB中使用以下语法来检查某个字段是否包含一个特定的字符串:

db.collection.findOne({name: {$regex : /string/}})

下面的例子展示了如何在一个有以下文档的集合队中使用这个语法:

db.teams.insertOne({team: "Mavs", position: "Guard", points: 31})

例1:检查字段是否包含字符串

我们可以使用下面的代码来检查是否有任何文档在团队字段中包含字符串 "avs":

db.teams.findOne({team: {$regex : /avs/}}) 

这个查询返回以下文档:

{ _id: ObjectId("618050098ffcfe76d07b1da5"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

注意,findOne()函数返回集合中第一个满足查询条件的文档。

这意味着其他球队的队名中可能也有'avs'这个字符串,但包含队名'Mavs'的文档只是第一个。

例2:检查字段是否包含字符串(不区分大小写)

我们也可以在字符串后面使用一个i来进行不区分大小写的匹配。

例如,假设我们使用下面的查询:

db.teams.findOne({team: {$regex : /AVS/i}}) 

这个查询也会返回以下文件:

{ _id: ObjectId("618050098ffcfe76d07b1da5"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

例3:检查字段是否包含字符串(无结果)

如果一个字段不包含我们搜索的特定字符串,我们将简单地收到null作为结果。

例如,假设我们使用下面的查询:

db.teams.findOne({team: {$regex : /ricks/}}) 

这个查询返回以下结果:

null

由于没有文件在团队名称中包含字符串'ricks',我们将收到null作为结果。

注意:你可以在这里找到$regex的完整文档.