本章目标,通过Java驱动的方式操作MongoDB,进行基本增删改查 操作。
新建一个类,通过junit测试下面代码
private MongoCollection<Document> coll; @Before public void before(){ MongoClient client = MongoDBUtil.getClient(); MongoDatabase db = client.getDatabase("mydb01"); coll = db.getCollection("user"); } @Test public void testInsert(){ Document doc = new Document(); doc.append("hello", "mongoDB"); coll.insertOne(doc); }打开客户端工具查看
这里初始化了1000条测试数据,过程就略过,数据结构如下
在MongoDB中like查询是通过正则的形式.
@Test public void testQueryLike(){ String where = "汽车"; Pattern pattern = Pattern.compile("^.*" + where+ ".*$", Pattern.CASE_INSENSITIVE); MongoCursor<Document> cursor = coll.find(Filters.regex("job", pattern)).iterator(); while(cursor.hasNext()){ Document doc = cursor.next(); System.out.println(doc.toJson()); } cursor.close(); }mongoDB中支持数据中的查询,这里演示的是 查询 hoby中的元素 包含完全包含下面的数组数据
@Test public void testQueryArray(){ MongoCursor<Document> cursor = coll.find(Filters.all("hoby", "天津工程职业技术学院","包头铁道职业技术学院")).iterator(); while(cursor.hasNext()){ Document doc = cursor.next(); System.out.println(doc.toJson()); } cursor.close(); }这里根据User下面的Dog 名称进行查询
@Test public void testQueryObject(){ MongoCursor<Document> cursor = coll.find(Filters.eq("dog.name", "葛习厉")).iterator(); while(cursor.hasNext()){ Document doc = cursor.next(); System.out.println(doc.toJson()); } cursor.close(); }MongoDB支持很多查询方式,总结归纳如下: 1 普通查询 key = value形式 2 范围查询 lt, gt lte gte 小于,大于,小于等于,大于等于 3 集合操作 in, all , nin上面集合中查询演示了all4布尔查询 ne not or and exists 5 子文档元素查询 上面例子中有提到根据User的Dog的名称查询 6 数组查询 find(tags:’aaa’) 查询 所有 tags这个数组中存在 aaa这个元素的 7 Javascript查询 8 正则表达式查询 9 其他查询 type(根据字段类型匹配) mod find({ age : { $mod : [3,0] } }) 查询年龄除以3余0的文档
下面是官网api地址
http://api.mongodb.com/java/3.0/?com/mongodb/client/model/Filters.html只查询 三个字段
@Test public void testQueryalitter(){ MongoCursor<Document> cursor = coll.find().projection(Projections.include("nickname","age","dog")).iterator(); while(cursor.hasNext()){ Document doc = cursor.next(); System.out.println(doc.toJson()); } cursor.close(); }