使用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());
}
}
});
网友评论