Java通過_id查詢mongodb數據庫

本文以mongo-java-driver-3.5.0.jar爲例

1 _id介紹:
MongoDB中存儲的文檔必須有一個”_id”鍵,其對應的”_id”值是由MongoDB服務器按照特定規律自動生成唯一的值,確保集合裏面每個文檔都能被唯一標識。這個鍵的值可以是任何類型的,默認是個ObjectId對象。

2 MongoDB查詢語句:
db.user.find({ “_id” : ObjectId(“59c8cbea6157d6c78dab4ff0”) })
這裏寫圖片描述

3 3中查詢語句實現Java語句:

public static MongoCollection<Document> connect() {  
    @SuppressWarnings("resource")  
    MongoClient client = new MongoClient("127.0.0.1", 27017);  
    MongoDatabase db = client.getDatabase("test");  
    MongoCollection<Document> collection = db.getCollection("user");  
    return collection;
} 
public static List<Document> findBy1(DBObject filter) {  
    List<Document> results = new ArrayList<Document>();  
    FindIterable<Document> iterables = connect().find((Bson) filter);  
    MongoCursor<Document> cursor = iterables.iterator();  
    while (cursor.hasNext()) {  
        results.add(cursor.next());  
    }  

    return results;  
}

@Test
public void findById () {
    String _id = "59c8cbea6157d6c78dab4ff0";

    // 方法1
    DBObject filter = new BasicDBObject(); 
    filter.put("_id", new ObjectId(_id)); // 該寫法在spring mvc + spring +hibernate項目中無效,具體原因不明確
    // filter.put("_id", _id); // 該寫法在spring mvc + spring +hibernate項目中有效,具體原因不明確
    List<Document> results = findBy1(filter); 
    for(Document doc : results){  
        System.out.println("方法1:" + doc.toJson());  
        // 方法1:{ "_id" : { "$oid" : "59c8cbea6157d6c78dab4ff0" }, "name" : "yy", "password" : "123", "nickname" : "ygirl2", "iid" : 2 }
    } 

    // 方法2
    Bson filter2 =  Filters.and(Filters.eq("_id", new ObjectId(_id)));
    List<Document> results2 = findBy(filter2); 
    for(Document doc : results2){  
        System.out.println("方法2:" +doc.toJson());  
        // 方法2:{ "_id" : { "$oid" : "59c8cbea6157d6c78dab4ff0" }, "name" : "yy", "password" : "123", "nickname" : "ygirl2", "iid" : 2 }
    } 

    // 方法3
    Document filter3 = new Document(); 
    filter3.append("_id", new ObjectId(_id));
    List<Document> results3 = findBy(filter3); 
    for(Document doc : results3){  
        System.out.println("方法3:" +doc.toJson()); 
        // 方法3:{ "_id" : { "$oid" : "59c8cbea6157d6c78dab4ff0" }, "name" : "yy", "password" : "123", "nickname" : "ygirl2", "iid" : 2 } 
    } 
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章