Bmob内部查询

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

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

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

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

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

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

});
BmobQuery<PuzzleInfo> query = new BmobQuery<PuzzleInfo>();
BmobQuery<User> innerQuery = new BmobQuery<User>();
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<PuzzleInfo>() {

    @Override
    public void done(List<PuzzleInfo> object,BmobException e) {
        if(e==null){
            Log.i("bmob","成功");
        }else{
            Log.i("bmob","失败:"+e.getMessage());
        }
    }
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容