0

我有两个收藏

  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"));
    }

输出:

游标值 null 游标值 null

但是当我查询 System.out.println(cursor.next().get("_id"));

输出:光标值 11.0 光标值 12.0

如何单独查询tenant_id 值?输出必须是光标值1,光标值2

4

1 回答 1

1

你想使用这个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() );
    }
于 2012-09-04T13:25:48.383 回答