2011-07-04 31 views
10

Với trình điều khiển Java Mongodb, tôi đang tìm cách trả về các trường bị giới hạn chỉ với find() hoặc findOne(). Ví dụ, tôi có một bộ sưu tập "people" với các lĩnh vực: "id", "name", "surname", "address", "city" ... và tôi chỉ muốn quay trở lại "name""surname"Mongodb Java - Cách trả về các trường bị hạn chế với find() hoặc findOne()

tôi đã tìm kiếm trên Web và tôi chỉ tìm thấy ví dụ này mã Java MongoDB: http://vsbabu.org/mt/archives/2010/03/02/simple_mongodbjava_example.html

Trả lời

11

Bạn có thể vượt qua một DBObject với tên của các trường và vượt qua nó ở đây:

cur = coll.find(new BasicDBObject("id", 6655), your_dbobject_with_field_names); 

Đây là API documentation

+0

OK đó là nó, có vẻ như chúng ta phải trả lại min. 2 trường ... this.dbcoll = this.db.getCollection ("people"); DBCursor cursor = this.dbcoll.find (new BasicDBObject(), new BasicDBObject ("tên", "họ")); – kozher

+0

Tôi nghĩ bạn sẽ làm BasicDBObjectBuilder.start(). Add ("name", 1) .add ("họ", 1) .get() – lobster1234

33

Nếu bạn đang sử dụng Java driver 3.1, bạn có thể sử dụng Projections:.

collection.find().projection(Projections.include("name", "surname")); 
+0

Cảm ơn bạn. "Dự báo" trước khi bao gồm bị thiếu! +1 –

0

mã này sẽ xử lý vấn đề của bạn (java xế 3.0.2)

BasicDBObject fields = new BasicDBObject(); 
//fields.put("_id", 0); 
fields.put("title", 0); 

DBCursor cursor = collection.find(new BasicDBObject(),fields).sort(new BasicDBObject("_id", 1)); 
Các vấn đề liên quan