如何将按数组元素查询MongoDB文档的语句转为Java BSON Filter代码
MongoDB Shell 转 Java BSON Filter 实现代码
以下实现基于MongoDB Java Driver 4.x版本,和你给出的Shell查询逻辑完全等价:仅当geometry.coordinates字段的数组元素顺序、取值完全匹配指定数组时才返回对应文档。
前置依赖(Maven示例)
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongodb-driver-sync</artifactId> <version>4.10.2</version> </dependency>
核心代码
导入必要类
import com.mongodb.client.model.Filters; import org.bson.conversions.Bson; import com.mongodb.client.MongoCollection; import com.mongodb.client.FindIterable; import org.bson.Document;
查询逻辑实现
// 1. 定义目标匹配数组 Double[] targetCoordinates = {19.045258, 49.804283}; // 2. 构建BSON查询过滤器,完全等价于原Shell查询条件 Bson filter = Filters.eq("geometry.coordinates", targetCoordinates); // 3. 获取cache集合实例(需替换为你的实际数据库名) MongoCollection<Document> cacheCollection = mongoClient.getDatabase("你的数据库名称").getCollection("cache"); // 4. 执行查询 FindIterable<Document> resultDocs = cacheCollection.find(filter); // 遍历结果示例 for (Document doc : resultDocs) { System.out.println(doc.toJson()); }
补充说明
如果你的需求是匹配geometry.coordinates包含指定两个坐标、不要求元素顺序和是否有其他额外元素,可以替换过滤器为:
Bson filter = Filters.all("geometry.coordinates", 19.045258, 49.804283);
内容的提问来源于stack exchange,提问作者Adsumus
相关产品推荐
相关产品推荐

