使用maven项目简单操作mongo数据库
1.添加pom依赖
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
2.对原声代码做简单封装
package mongo.ref; import java.util.ArrayList; import java.util.List; import org.bson.BsonDocument; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.result.UpdateResult; public class MongoDb { private static MongoCollection<Document> collection; private static MongoCollection<BsonDocument> bsonCollection; private static MongoClient client =null; private static MongoDatabase db =null; /** * 链接数据库 * * @param databaseName * 数据库名称 * @param collectionName * 集合名称 * @param hostName * 主机名 * @param port * 端口号 */ public static void connect(String databaseName, String collectionName, String hostName, int port) { client = new MongoClient(hostName, port); db= client.getDatabase(databaseName); collection = db.getCollection(collectionName); System.out.println(collection); } public static void bsonConnect(String databaseName, String collectionName, String hostName, int port) { client = new MongoClient(hostName, port); db= client.getDatabase(databaseName); bsonCollection = db.getCollection(collectionName,BsonDocument.class); System.out.println(bsonCollection); } /** * 关闭连接 */ public static void closeClient(){ if (client != null) { client.close(); } } /** * 插入一个文档 * * @param document * 文档 */ public static void insert(Document document) { collection.insertOne(document); } /** * 插入一个文档 * * @param document * 文档 */ public static void insertBsonDocument(BsonDocument document) { bsonCollection.insertOne(document); } /** * 查询所有文档 * * @return 所有文档集合 */ public static List<Document> findAll() { List<Document> results = new ArrayList<Document>(); FindIterable<Document> iterables = collection.find(); MongoCursor<Document> cursor = iterables.iterator(); while (cursor.hasNext()) { results.add(cursor.next()); } return results; } /** * 根据条件查询 * * @param filter * 查询条件 //注意Bson的几个实现类,BasicDBObject, BsonDocument, * BsonDocumentWrapper, CommandResult, Document, RawBsonDocument * @return 返回集合列表 */ public static List<Document> findBy(Bson filter) { List<Document> results = new ArrayList<Document>(); FindIterable<Document> iterables = collection.find(filter); MongoCursor<Document> cursor = iterables.iterator(); while (cursor.hasNext()) { results.add(cursor.next()); } return results; } /** * 更新查询到的第一个 * * @param filter * 查询条件 * @param update * 更新文档 * @return 更新结果 */ public static UpdateResult updateOne(Bson filter, Bson update) { UpdateResult result = collection.updateOne(filter, update); return result; } /** * 更新查询到的所有的文档 * * @param filter * 查询条件 * @param update * 更新文档 * @return 更新结果 */ public static UpdateResult updateMany(Bson filter, Bson update) { UpdateResult result = collection.updateMany(filter, update); return result; } /** * 更新一个文档, 结果是replacement是新文档,老文档完全被替换 * * @param filter * 查询条件 * @param replacement * 跟新文档 */ public static void replace(Bson filter, Document replacement) { collection.replaceOne(filter, replacement); } /** * 根据条件删除一个文档 * * @param filter * 查询条件 */ public static void deleteOne(Bson filter) { collection.deleteOne(filter); } /** * 根据条件删除多个文档 * * @param filter * 查询条件 */ public static void deleteMany(Bson filter) { collection.deleteMany(filter); } }
3.简单crud操作
package mongo.ref; import java.util.HashMap; import java.util.List; import java.util.Map; import org.bson.BsonDocument; import org.bson.Document; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mongodb.client.result.UpdateResult; public class MongoTest { @Before public void before() { MongoDb.connect("test", "staff", "192.168.50.130", 27017); MongoDb.bsonConnect("test", "staff", "192.168.50.130", 27017); } @Test public void testInsert() { Document document = new Document(); document.append("name", "gu").append("gender", "male"); MongoDb.insert(document); } @Test public void testInsertMap() { Map<String,Object> map=new HashMap<String,Object>(); map.put("name", "lifeix"); map.put("gender", "undefinded"); Document document = new Document(map); MongoDb.insert(document); } @Test public void testInsertJson() { String json ="{'name':'neoyin','gender':'male','avatar':'/444.jpg'}"; BsonDocument document = BsonDocument.parse(json); MongoDb.insertBsonDocument(document); } @Test public void testInsertJsonHaveChild() { String json ="{'name':'nick','gender':'male','avatar':'/1.jpg','teacher':[{'id':'0001','name':'gcc','age':'28'},{'id':'002','name':'gcc2','age':'27'}],'score':10}"; BsonDocument document = BsonDocument.parse(json); MongoDb.insertBsonDocument(document); } @Test public void testFindAll() { List<Document> results = MongoDb.findAll(); for (Document doc : results) { System.out.println(doc.toJson()); } } @Test public void testFindBy() { Document filter = new Document(); filter.append("name", "wang"); List<Document> results = MongoDb.findBy(filter); for (Document doc : results) { System.out.println(doc.toJson()); } } /** * 条件表达式 * $ge(>) $get(>=) $lt(<) $lte(<=) $ne(<>) $in $nin $all $exists * $or $nor $where $type等等 */ @Test public void testFindByExpression() { Document expression = new Document(); expression.append("score", new Document("$gte", 5)); List<Document> results = MongoDb.findBy(expression); for (Document doc : results) { System.out.println(doc.toJson()); } } @Test public void testUpdateOne() { Document filter = new Document(); filter.append("gender", "male"); // 注意update文档里要包含"$set"字段 Document update = new Document(); update.append("$set", new Document("gender", "female")); UpdateResult result = MongoDb.updateOne(filter, update); System.out.println("matched count = " + result.getMatchedCount()); } @Test public void testUpdateMany() { Document filter = new Document(); filter.append("gender", "female"); // 注意update文档里要包含"$set"字段 Document update = new Document(); update.append("$set", new Document("gender", "male")); UpdateResult result = MongoDb.updateMany(filter, update); System.out.println("matched count = " + result.getMatchedCount()); } @Test public void testReplace() { Document filter = new Document(); filter.append("name", "wang"); // 注意:更新文档时,不需要使用"$set" Document replacement = new Document(); replacement.append("value", 123); MongoDb.replace(filter, replacement); } @Test public void testDeleteOne() { Document filter = new Document(); filter.append("value",123); MongoDb.deleteOne(filter); } @Test public void testDeleteMany() { Document filter = new Document(); filter.append("gender", "male"); MongoDb.deleteMany(filter); } @After public void testCloseClient(){ MongoDb.closeClient(); } }
4.查看日志