Bmob内部查询

使用Bmob进行内部查询
例如:查询带有图片的帖子的评论列表:

BmobQuery query = new BmobQuery();
BmobQuery innerQuery = new BmobQuery();
innerQuery.addWhereExists("image", true);
// 第一个参数为评论表中的帖子字段名post
// 第二个参数为Post字段的表名,也可以直接用"Post"字符串的形式
// 第三个参数为内部查询条件
query.addWhereMatchesQuery("post", "Post", innerQuery);
query.findObjects(new FindListener() {

    @Override
    public void done(List object,BmobException e) {
        if(e==null){
            Log.i("bmob","成功");
        }else{
            Log.i("bmob","失败:"+e.getMessage());
        }
    }
});

查询多对多关联
如果希望查询喜欢该帖子(objectId为ESIt3334)的所有用户,那么就需要用到addWhereRelatedTo方法进行多对多关联查询。
示例代码:

// 查询喜欢这个帖子的所有用户,因此查询的是用户表
BmobQuery query = new BmobQuery();
Post post = new Post();
post.setObjectId("ESIt3334");
//likes是Post表中的字段,用来存储所有喜欢该帖子的用户
query.addWhereRelatedTo("likes", new BmobPointer(post));    
query.findObjects(new FindListener() {

    @Override
    public void done(List object,BmobException e) {
        if(e==null){
            Log.i("bmob","查询个数:"+object.size());
        }else{
            Log.i("bmob","失败:"+e.getMessage());
        }
    }

});
BmobQuery query = new BmobQuery();
BmobQuery innerQuery = new BmobQuery();
User user = new User();
user.setObjectId("ESIt3334");
innerQuery.addWhereRelatedTo("following", new BmobPointer(user)); 
//innerQuery.addWhereExists("image", true);
// 第一个参数为评论表中的帖子字段名post
// 第二个参数为Post字段的表名,也可以直接用"Post"字符串的形式
// 第三个参数为内部查询条件
query.addWhereMatchesQuery("author", "User", innerQuery);
query.findObjects(new FindListener() {

    @Override
    public void done(List object,BmobException e) {
        if(e==null){
            Log.i("bmob","成功");
        }else{
            Log.i("bmob","失败:"+e.getMessage());
        }
    }
});

你可能感兴趣的:(Bmob内部查询)