Mongo 查找属性值不包含给定字符串的文档

mongodb

1个回答

写回答

15564697269

2025-06-23 02:40

+ 关注

RegEx
RegEx

使用Mongo数据库进行数据查询时,有时我们需要查找属性值不包含给定字符串的文档。这意味着我们只想获取那些属性值中不包含指定字符串的数据。在本文中,我们将介绍如何使用Mongo进行这种查询,并提供相关的案例代码。

在Mongo中,我们可以使用$not和$RegEx操作符来实现这一目标。$not操作符用于对一个表达式取反,而$RegEx操作符用于进行正则表达式匹配。结合使用这两个操作符,我们可以查询出属性值不包含给定字符串的文档。

下面是一个示例,假设我们有一个集合名为"users",其中包含了以下几个文档:

Javascript

{ "_id": 1, "name": "Alice" }

{ "_id": 2, "name": "Bob" }

{ "_id": 3, "name": "Charlie" }

现在我们想要获取那些名字中不包含字母"l"的文档。我们可以使用以下代码来实现:

Javascript

db.users.find({ name: { $not: { $RegEx: "l" } } })

运行以上代码后,我们将会得到以下结果:

Javascript

{ "_id": 2, "name": "Bob" }

这是因为只有"Bob"这个名字中不包含字母"l"。

案例代码:

Javascript

const MongoClient = require('MongoDB').MongoClient;

async function findDocuments() {

const uri = "MongoDB+srv://<username>:<password>@<cluster-url>/test?retryWrites=true&w=majority";

const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

try {

awAIt client.connect();

const Database = client.db("test");

const collection = Database.collection("users");

const query = { name: { $not: { $RegEx: "l" } } };

const result = awAIt collection.find(query).toArray();

console.log(result);

} catch (e) {

console.error(e);

} finally {

awAIt client.close();

}

}

findDocuments();

在以上示例代码中,我们首先使用MongoClient来连接到Mongo数据库。然后,我们指定了数据库名称和集合名称,即"test"和"users"。接下来,我们定义了一个查询对象,其中name属性使用了$not和$RegEx操作符。最后,我们使用collection.find()方法执行查询,并将结果打印出来。

本文介绍了如何在Mongo中查找属性值不包含给定字符串的文档。我们使用了$not和$RegEx操作符来实现这一目标,并提供了相关的案例代码。通过这些方法,我们可以轻松地查询出满足我们需求的数据。希望本文对您有所帮助!

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号