私は2つのコレクションを持っています
checkone
{"_id":1,"name":"alex"},
{"_id":2,"name":"sandy"}
checktwo
{"_id":11,"password":"alex",tenant_id:{$ref:"checkone","$id":1}}
{"_id":12,"password":"suman",tenant_id:{$ref:"checkone","$id":2}}
dbref fetch を実行すると、それを参照するすべてのフィールドが取得されます。
DBCursor cursor = coll.find();
while(cursor.hasNext()){
DBRef addressObj = (DBRef)cursor.next().get("tenant_id");
System.out.println(addressObj.fetch());
}
出力:
{"_id":1,"name":"alex"},
{"_id":2,"name":"sandy"}
しかし、それを制限する方法は NAME フィールドだけを取得する必要があります。私はこのようにしてみました。
BasicDBObject query=new BasicDBObject();
Map<String, Object> whereMap = new HashMap<String, Object>();
whereMap.put("tennat_id", 1);
query.putAll(whereMap);
BasicDBObject field=new BasicDBObject("name",1);
DBCursor cursor = coll.find(query,field);
while(cursor.hasNext()){
DBRef addressObj = (DBRef)cursor.next().get("tenant_id");
System.out.println(addressObj.fetch());
}
しかし、この行でヌルポインタ例外が発生しています
DBCursor cursor = coll.find(query,field);
mongodb javaのフィールドを制限するには?