Mongo:You cannot currently mix including and excluding fields. Contact us if this is an issue.

在Mongo的Driver中用db.collection.find(<query>,<projection>)方法利用<projection>對象顯示指定字段時,報錯如上!

起始Mongo的官方文檔裏解釋的是直接設置字段爲1,則顯示,0就不顯示,如下面:

DBObject query = new DBObject();
	query.put("name",1);
	query.put("age",1);
	coll.find(new DBObject("name","lisa"),query);
如果按照上面的方式調用,就會報錯,如下:
Exception in thread "main" com.mongodb.MongoException: You cannot currently mix including and excluding fields. Contact us if this is an issue.
	at com.mongodb.MongoException.parse(MongoException.java:82)
	at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:314)
	at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:295)
	at com.mongodb.DBCursor._check(DBCursor.java:368)
	at com.mongodb.DBCursor._hasNext(DBCursor.java:459)
	at com.mongodb.DBCursor._fill(DBCursor.java:518)
	at com.mongodb.DBCursor.toArray(DBCursor.java:553)
	at com.mongodb.DBCursor.toArray(DBCursor.java:542)
	at com.mongo.test.MongoTest.main(MongoTest.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
經過嘗試,我發現,其實只要在query對象中put一個字段,該字段就會顯示,對應的,不顯式的put一個字段,這個字段就不會顯示,如下:

DBObject query = new DBObject();
	query.put("name","");
	query.put("age","");
	coll.find(new DBObject("name","lisa"),query);

這樣結果就會自動顯示name字段和age字段,如下所示

[{ "_id" : { "$oid" : "50ff5b28f5e86c4c3281c61c"} , "name" : "abc" , "age" : 13.0}]


在這裏要注意一下,無論你要顯示的字段是String類型還是int類型,都要填充”“形式,即:query.put("name","");query.put("age","");就可以了,

檢索結果會自動出來的!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章