MongoDB 的 Java 操作中,最重要的一个类就是 com.mongodb.client.model.Filters(过滤器)。我们的很多查询,条件筛选都是通过它实现。比如:eq、ne、gt、lt、gte、lte、in、nin、and、or、not、nor、exists、type、mod、regex、text、where、all、elemMatch、size、bitsAllClear、bitsAllSet、bitsAnyClear、bitsAnySet、geoWithin、geoWithin、geoWithinBox、geoWithinPolygon、geoWithinCenter、geoWithinCenterSphere、geoIntersects、near、nearSphere 等。本文主要介绍几个常用的过滤操作。
通过上一章《详解 com.mongodb.client.MongoCollection 的用法!》的学习,我们知道。insertMany、find、updateMany、deleteMany 等方法。它们的过滤条件都需要一个 org.bson.conversions.Bson 对象。因此,我们要达到过滤目的,必须要构造一个 Bson 对象。Bson 是一个接口,它有很多的实现类。比如:SimpleEncodingFilter 等。
其中 Filters 过滤器的作用就是构造不同的 Bson 对象。过滤条件可以有多个,因此就会构成一个过滤器链。
具体的使用教程如下:
public class MongoDBJDBC{ public static void main( String args[] ){ try{ // 连接到 mongodb 服务 MongoClient mongoClient = new MongoClient( "localhost" , 27017 ); // 连接到数据库 MongoDatabase mongoDatabase = mongoClient.getDatabase("xttblog"); System.out.println("Connect to database successfully"); MongoCollection<Document> collection = mongoDatabase.getCollection("test"); System.out.println("集合 test 选择成功"); //将文档中likes=100的文档修改为likes=200 collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200))); //将文档中likes=100 or likes=200 的文档修改为likes=300 collection.updateMany(Filters.or(Filters.eq("likes", 100), Filters.eq("likes", 300)), new Document("$set",new Document("likes",300))); //将文档中likes=300 AND _id=200 的文档修改为likes=400 collection.updateMany(Filters.and(Filters.eq("likes", 100), Filters.eq("id", 200)), new Document("$set",new Document("likes",400))); //将文档中likes != 100 的文档修改为likes=500 collection.updateMany(Filters.ne("likes", 100)), new Document("$set",new Document("likes",500))); //将文档中likes > 100 的文档修改为likes=600 collection.updateMany(Filters.gt("likes", 100)), new Document("$set",new Document("likes",600))); //将文档中likes < 800 的文档修改为likes=700 collection.updateMany(Filters.lt("likes", 100)), new Document("$set",new Document("likes",700))); // ...... //检索查看结果 FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while(mongoCursor.hasNext()){ System.out.println(mongoCursor.next()); } }catch(Exception e){ System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } } }
常用的几个比较,我给大家整理了一个表格,如下图所示:
像我前面介绍的这些 eq、ne、gt、lt、gte、lte、in、nin、and、or、not、nor、exists、type、mod、regex、text、where、all、elemMatch、size、bitsAllClear、bitsAllSet、bitsAnyClear、bitsAnySet、geoWithin、geoWithin、geoWithinBox、geoWithinPolygon、geoWithinCenter、geoWithinCenterSphere、geoIntersects、near、nearSphere 用法都很类似。大家自己去动手写个 demo 就 OK 了。
: » 详解 com.mongodb.client.model.Filters 的用法和教程
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/251940.html