CNode

多表关联查询怎么做?

Hhuanghaiyang发布于13 年前最后回复13 年前4 回复11630 浏览0 收藏

本人是菜鸟,练习的时候遇到了一个问题, 假如我有两张表,Author和Book,现在我想做一下模糊查询,通过一个关键字name_ 来查找Book的name like name_ 或者Book.Author.name like name_

对于嵌入式的文档模型关系我可以这么做: var User = mongoose.Schame({ name :String , author : { name :String } }); var reg = new Regex(name_ , 'g'); User.find({$or:{name : reg,author.name :reg}}).exec();

但是为了独立表结构,实际ref模型如下: var User = mongoose.Schame({ name :String , author : { type :ObjectId, ref :'author' } }); var Author = mongoose.Schame({ name : String , books : [{ type : ObjectId , ref :'book' }] });

求:独立表怎样进行关联查询

查看回复

回复 (4)

A
a272121742#1·13 年前

你使用API中的populate方法试一试,我没数据库,所以你自己try一下,需要时call我2426960129

H
huanghaiyang#2·13 年前
引用 a272121742你使用API中的populate方法试一试,我没数据库,所以你自己try一下,需要时call我2426960129

意思是populate之后手动对记录进行过滤么? Book.find().select('name author author.name').populate({path:'author'}).exec(过滤);

扫表了。。。 这种情况下遇到分页怎么办啊

H
huanghaiyang#3·13 年前

貌似可以用$elemMatch ,下班回家试试

A
a272121742#4·13 年前
引用 a272121742你使用API中的populate方法试一试,我没数据库,所以你自己try一下,需要时call我2426960129

@huanghaiyang 分页继续往后追加,只要不exec都是返回query对象

参与回复
登录后即可参与回复。登录