资讯专栏INFORMATION COLUMN

mongoose复杂查询

wdzgege / 1455人阅读

摘要:的一些高级用法中文移民的用法在中没有关联查询这一说,因此必须就要先设置好相关联的对象比如,我们在中就就先定义一个对象时间价格区域而后使用把相关联的查询出来当然,也是支持内嵌数组对象的你可以把他定义为复杂查询以下是一个复杂查询,基本包括了所

mongoose的一些高级用法:

1 populate(中文:移民)的用法
在mongodb中没有关联查询这一说,因此必须就要先设置好相关联的对象
比如,我们在ZonePrice中就就先定义一个Zone对象

var ZonePriceSchema = new mongoose.Schema({
    
    zone:{type:ObjectId, ref:"Zone"},
    time: String,      //时间
    price: Number,       //价格
    district:String,   //区域
})

而后使用populate把相关联的zone查询出来

ZonePrice.find({})
         .populate({ 
            path:"zone",
            match:{priceRate:{$gt:0}},
            options:{ limit:pageSize,
            skip:(pageNum-1)*pageSize }
})

当然,mongoose也是支持内嵌数组对象的
你可以把他定义为

someSchema({
...
ofObjectId: [Schema.Types.ObjectId],
...
})

2 复杂查询
以下是一个复杂查询,基本包括了所有的查询用法

 Person
      .find({ occupation: /host/ }) 
      .where("name.last").equals("Ghost")   // Person.name.last是Ghost
      .where("age").gt(17).lt(66)  // 17 < Person.age <66
      .where("likes").in(["vaporizing", "talking"])//likes是vaporizing或者talking
      .limit(10)  //限制10条记录
      .sort("-occupation")  //根据occupation的倒序排
      .select("name occupation") //选择name和occupation字段
      .exec(callback);

3 模糊匹配

有时候在项目中需要搜索功能,而搜索功能的实现必须用模糊匹配,这个时候可以使用or进行多字段匹配,但速度比较慢,大系统最好使用专业的搜索方法

or表示在数组里的条件满足一个即可,$regex表示一个正则表达式,匹配了key,同时,加入了$option的$i表示忽略大小写

Job.find({
        $or: [
          {"description": {"$regex": key, $options: "$i"}},
          {"city": {"$regex": key, $options: "$i"}},
          {"name": {"$regex": key, $options: "$i"}}]
      })
      .populate("JobType", "name")
      .exec(function (err, jobs) {
        if (err) {
          callback(err);
        } else {
          callback(null, jobs);
        }
      })

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/18865.html

相关文章

  • Mongoose增查改删学习笔记

    摘要:查询条件控制返回的字段控制选项回调函数。改查询条件需要修改的数据,不能修改主键控制选项回调函数,返回的是受影响的行数。执行查询,回调函数。使用链式语句时,可以在之后接执行查询,并指定回调函数。 初学Node.js接触到MongoDB数据库,阅读资料中推荐的都是Mongoose模块,可以更加方便的对数据库进行操作,便开始接触Mongoose。在学习时碰到许多基础问题,查阅了许多资料理来理...

    lookSomeone 评论0 收藏0
  • 在node中的mongodb及mongoose常见用法

    摘要:是在环境下对进行便捷操作的对象模型工具安装一开始需要安装环境以及数据库,然后创建数据文件夹并且启动安装启动。出错返回符合条件的文档数。修改后的标题同上取反,删除一个字段执行后字段不存在增减修改器,只对数字有效。 Mongoose是在node.js环境下对mongodb进行便捷操作的对象模型工具 安装 一开始需要安装node.js环境以及mongodb数据库,然后创建mongdb数据文件...

    liuhh 评论0 收藏0
  • 一篇文章带你入门Mongoose

    摘要:当然,可以使用方法来简写代码删除第个元素类似的,该方法也不能省略回调函数,否则数据不会被删除。 走在前端的大道上 Mongoose是在node.js环境下对mongodb进行便捷操作的对象模型工具 因此,要使用mongoose,则必须安装node.js环境以及mongodb数据库。mongoose使mongodb操作更简单便捷。可以在 github 中获得其源码,也可以在这里查看 ap...

    wayneli 评论0 收藏0
  • mongoose常用方法(查询篇)

    摘要:可以是字符串或对象。与相同,但只返回符合条件的第一个文档批注参考文档基础入门 条件 $or 或关系$nor 或关系取反$gt 大于$gte 大于等于$lt 小于$lte 小于等于$ne 不等于$in 在多个值范围内$n...

    weknow619 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<