mongoose入门学习

Mongoose

官方手册:

https://docs.mongodb.com/manual/ 

  1. 条件操作符

https://blog.csdn.net/csm0912/article/details/81178531

栗子

https://blog.csdn.net/qq_38671973/article/details/80687586

$or

Model.find({$or: [{a:1,b:2},{a:10}]}):意思是在模型中查询出多个符合:a的值为1并且b的值为2 或者 a的值为10的数据

$in

Model.find({name:{$in: [‘朱’,’张’] }}):意思是在模型中查询出name字段中值为”朱”或者”张”$elemMatch

Model.find({arr:{$elemMatch: { $eq: 111 }}}):意思是在模型中查询出arr【数组类型,存储的是字符串或者数值】这个数组中包含111这个值的数据

Model.find({arr:{$elemMatch:{id:111}}}):意思是在模型中查询出arr【数组类型,存储的是对象】这个数组中某个对象id为111的这条数据

  1. $regex

Model.find({name:{$regex: “朱”, $options:”$i”}})意思是查询出name字段的值中包含字符”朱”的数据【例如”朱谁谁”就会被查询出来】,$options是不区分英文的大小写

查询不匹配的:Model.find({name:{$regex:/^(?!.*朱)/i}})意思是查询出name字段的值中不包含字符”朱”的数据【例如”朱谁谁”就不会被查询出来】,如果条件为空,需要将括号中的所有条件全部置为空,Model.find({name:{$regex:/^()/i}})才可以将所有的数据查询出来

文章一https://blog.csdn.net/you_are_my_dream/article/details/57402067 

文章二:https://www.jb51.net/article/52491.htm

文章三:http://blog.sina.com.cn/s/blog_3eec0ced0101alve.html 

3. 正则表达式在线生成工具

http://tools.jb51.net/regex/create_reg 

 

  1. 多表联查

文章一https://segmentfault.com/a/1190000002727265

文章二https://www.jianshu.com/p/817ff51bd548

Populate:

两表联查

实际就是当你在a模型中,有一个字段例如bId【b模型的主键】,关联了b模型。(语句:bId:{ type: Schema.Types.ObjectId, ref: ‘b’}  , ref:‘b’是关联的模型名),然后当查询a模型时,如果不使用populate那么,bId显示的就是b模型的主键ID值。

如果populate({path:”bId”}),就是将a模型关联b模型的bId字段查询出来这条数据,填充给bId,此时bId就不只是一个id号了,而是此主键id在b模型对应的具体数据; a模型关联多个字段,比如bId,cId,dId,那么可以通过populate({path:”bid cId dId”})即可填充这几个字段,字段之间用。空格  分隔即可【这就相当于两表联查】

三表联查

populate({path:”bId”, populate: {path: “cId”}}) 意思就是,a模型关联了b模型,将bId字段填充完之后,b模型中还有cId字段关联其他的模型,只需要在内部再次调用populate({path:”cId”})即可填充。【注释:实际理解为a模型为1级,b模型为二级,c模型为三级,就比如a关联了b,c模型,b关联了e模型,c关联了f模型,填充b和b中的e,使用populate({path:”b”, populate:{path:e}}),不会出现去c模型中寻找e的情况,除非c也关联了e模型,并且字段名称和b中的也一样才会彼此都填充】

Select:

选择模型的哪些字段进行赋值。Populate({path:”bId”, select:{name:1}}),意思为将bId填充,但只填充此模型的name字段。其他字段默认为undefined

 

 

 

 

  1. 多级嵌套关联查询

文章一https://segmentfault.com/q/1010000012025144 

文章二:https://segmentfault.com/q/1010000012025144

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值