MongoDB原生態API使用 + 查詢文件並顯示指定欄位
阿新 • • 發佈:2018-12-24
一、pom依賴
<properties> <mongodb.version>3.6.3</mongodb.version> </properties> <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>${mongodb.version}</version> <!--$NO-MVN-MAN-VER$--> </dependency> <dependency> <groupId>org.mongodb</groupId> <artifactId>bson</artifactId> <version>${mongodb.version}</version> </dependency> </dependencies>
二、簡單案列
全域性MongoDb操作物件
MongoClient mongoClient = new MongoClient("localhost" , 27017); //或者使用下面的方法,使用連線字串進行構建Mongo客戶端例項 // MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017"); // MongoClient mongoClient = new MongoClient(connectionString); /** * 一旦有了連線到MongoDB部署的MongoClient例項,就可以使用MongoClient.getdatabase()方法來訪問資料庫。 * 將資料庫的名稱指定到getDatabase()方法。如果資料庫不存在,MongoDB將在您第一次為該資料庫儲存資料時建立資料庫 * 資料庫例項不可變 */ MongoDatabase database = mongoClient.getDatabase("mydb"); /** * * 一旦有了DB例項後,就使用它的getCollection()方法來訪問一個集合。 * 將集合的名稱指定到getCollection()方法。如果一個集合不存在,MongoDB將在您第一次為該集合儲存資料時建立集合。 */ /** * 例如,使用資料庫例項,下面的語句訪問mydb資料庫中的名為test的集合 * 集合不可變 */ MongoCollection<Document> collection = database.getCollection("test");
/**
* 有條件取出(查詢)第一個文件物件(第一條資料)
*/
@Test
public void findOne(){
//選擇性的顯示欄位 0:不顯示 ,1:顯示
BasicDBObject exclude = new BasicDBObject();
exclude.append("_id", 0);
Document doc = collection.find().projection(exclude).first();
System.err.println("只取【test】集合中的第一個文件物件:"+doc.toJson());
}
利用cmd查詢結果顯示如下
db.test.find().pretty()
如果我們不想顯示這個"_id"欄位,我們可以這樣做
db.test.find({},{'_id':0}).pretty()
利用api達到這種效果,就是使用find()方法後面再跟上這個方法
我們點進去看看這個方法的說明是什麼
翻譯成中文意思就是
設定描述欄位的文件,以返回所有匹配的文件
意思就是,欄位約束
我們回過頭來再來看看什麼是BasicDBObject
向這個物件新增鍵值對
比如新增一個"_id",0的鍵值對
然後把這個物件放進欄位約束的方法中,比如這樣
連著解讀就是:查詢這個collection集合中的所有文件,加個約束就是,不顯示文件的"_id"欄位,再加個條件就是隻取出第一條
我們打下斷點,看一下這個對映成MongoDB查詢語句是什麼
熟悉不,是不是對應我們的
我們還可以這樣寫,給物件新增更多的鍵值對
/**
* 有條件取出(查詢)第一個文件物件(第一條資料)
*/
@Test
public void findOne(){
//選擇性的顯示欄位 0:不顯示 ,1:顯示
BasicDBObject exclude = new BasicDBObject().append("_id", 0).append("name", 0).append("count", 0);
Document doc = collection.find().projection(exclude).first();
System.err.println("只取【test】集合中的第一個文件物件:"+doc.toJson());
}
查詢效果如下
注意,給物件新增欄位的約束鍵值對的時候,一定不要混合的使用,比如
這樣的話,將會丟擲異常
記住,不帶這樣調戲MongoDB的find查詢的,你不顯示a欄位,其實就是顯示b欄位,你不要來個'a':0,'b':1,這樣簡直就是多此一舉