MongoDB Java Driver 3.4操作


  1. 導入jar包

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.4.2</version>
    </dependency>
    
  2. 連接MongoDB

    實例化一個沒有任何連接參數的MongoClient對象,可以連接到運行在本地主機的27017端口

    MongoClient mongoClient = new MongoClient();
    

    我們也可以連接到指定主機的27017端口

    MongoClient mongoClient = new MongoClient("localhost");
    

    指定主機和端口

    MongoClient mongoClient = new MongoClient("localhost", 27017);
    

    指定MongoClientURI

    MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
    
  3. 獲得數據庫和集合

    連接到test庫

    MongoDatabase database = mongoClient.getDatabase("test");
    

    獲得users集合

    MongoCollection<Document> collection = database.getCollection("users");
    
  4. 查詢文檔

    用來打印查詢結果

    Block<Document> printBlock = new Block<Document>() {
        @Override
        public void apply(Document document) {
            System.out.println(document.toJson());
        }
    };
    

    查詢所有文檔

    collection.find().forEach(printBlock);
    
    collection.find(new Document()).forEach(printBlock);
    

    復合查詢

    collection.find(eq("name", "sue")).forEach(printBlock); // 通過過濾器查詢
    
    collection.find(and(gte("age", 20), lt("age", 30), eq("type", 2))).forEach(printBlock); // 通過Filters 過濾
    
    collection.find(new Document("age", new Document("$gte", 20).append("$lt", 30)).append("type", 2)).forEach(printBlock); // 通過 filter document 過濾
    
    

    返回指定的查詢字段

    collection.find().projection(new Document("name", 1).append("age", 1).append("type", 1).append("_id", 0)).forEach(printBlock); // 通過.projection()指定返回的字段
    
    collection.find().projection(fields(include("name", "age", "type"), excludeId())).forEach(printBlock);  // 通過Projections類過濾
    
    

    排序

    collection.find().sort(Sorts.ascending("name")).forEach(printBlock);    // 通過.sort() Sorts類排序
    
    
  5. 增加文檔

    插入一條數據

    Document document = new Document("name", "webb")
                .append("age", 24)
                .append("type", 1)
                .append("status", "A")
                .append("favorites", new Document("sports", "run").append("food", "photo"));
    
    collection.insertOne(document);   // 插入一條數據
        
    

    插入多條數據

    Document document2 = new Document("name", "lebo")
                .append("age", 24)
                .append("type", 1)
                .append("status", "A")
                .append("favorites", new Document("sports", "run").append("food", "photo"));
    
    List<Document> documents = new ArrayList<>();
    documents.add(document);
    documents.add(document2);
    collection.insertMany(documents); // 插入多條數據
    
    
  6. 更新文檔

    修改單個文檔

    collection.updateOne(eq("name", "abc"), combine(set("age", 24), set("status", "B")));
    

    修改多個文檔

    collection.updateMany(eq("name", "webb"), combine(set("age", 23), set("type", 2)));
    

    如果upsert為true的話,沒有匹配到查詢條件,就會插入一條。

    collection.updateOne(eq("name", "wenboxu"), combine(set("age", 24)), new UpdateOptions().upsert(true));
    

    替換一條記錄

    collection.replaceOne(eq("name", "wenboxu"), new Document("age", "22").append("name", "wenboxu"));
    
  7. 刪除文檔

    刪除單個文檔

    collection.deleteOne(eq("name", "webb"));
    

    刪除多個文檔

    collection.deleteMany(eq("age", 22));
    

    刪除所有文檔

    collection.deleteMany(new Document());
    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM