我有两个集合
checkone
{"_id":1,"name":"alex"},
{"_id":2,"name":"sandy"}
checktwo
{"_id":11,"password":"alex",tenant_id:{$ref:"checkone","$id":1}}
{"_id":12,"password":"alex",tenant_id:{$ref:"checkone","$id":2}}
我正在查询特定字段tenant_id值。
DB database = mongo.getDB("testcheck");
DBCollection tenant = database.getCollection("checktwo");
BasicDBObject query = new BasicDBObject();
BasicDBObject field = new BasicDBObject();
field.put("tenant_id.$id", 1);
DBCursor cursor = tenant.find(query,field);
while (cursor.hasNext()) {
System.out.println("cursor value");
System.out.println(cursor.next().get("tenant_id.$id"));
}
输出:
游标值无效的游标值空
但是当我查询System.out.println(cursor.next().get("_id")时;
输出:游标值11游标值12.0
如何单独查询tenant_id值?输出必须是光标值1,光标值2
您想要使用DBRef
类。这是对原始while()
循环的重写。
BasicDBObject query = new BasicDBObject();
BasicDBObject field = new BasicDBObject();
DBCursor cursor = tenant.find( query, field );
while( cursor.hasNext() ) {
System.out.println( "cursor value" );
DBRef ref = ( DBRef )cursor.next().get( "tenant_id" );
System.out.println( ref.getId() );
}