mongoose学习笔记5之Queries

假设以下代码都运行在

let mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
let db = mongoose.connection;
db.on('error', () => {
  console.error('链接失败');
});
db.once('open', function () {
  //下面讲到的所有代码都在这里运行
});

Queries

文档可以通过模型的几个静态辅助方法检索。
涉及指定查询条件的任何模型方法可以以两种方式执行:
当一个回调函数:

  • 被传递,操作将立即执行,结果传递到回调函数。

  • 不传递,则返回一个Query实例,为您提供一个特殊的QueryBuilder接口。
    让我们来看看当传递回调时会发生什么:

    let Schema = mongoose.Schema;
    let schema = new Schema({
        name:String,
        age:Number,
        occupation:String
    });
    let Person = mongoose.model('Person',schema);
    let man = new Person({
        name:'noshower',
        age:22,
        occupation:'teacher'
    });
    man.save(function(err,man){
        if(err){
            return console.error(err);
        }
        console.log(man);// { __v: 0,name: 'noshower',age: 22,occupation: 'teacher',_id: 587a0234a693c31ed46c4885 }
    // 查找名叫‘noshower'的人,选择“名字”和“职业”字段
        Person.findOne({"name":"noshower"},'name occupation',function(err,man){
            console.log(man);//{ _id: 587a02251d73bb1ec61ace04, name: 'noshower', occupation: 'teacher' }
        });
    });
    

这里我们看到查询立即执行,结果传递给我们的回调。 Mongoose中的所有回调都使用模式:callback(error,result)。如果执行查询时发生错误,则error参数将包含错误文档,结果将为null。如果查询成功,error参数将为null,并且result将填充查询的结果。

任何地方回调被传递到Mongoose中的查询,回调函数都遵循这个模式callback(err,result)。result取决于操作:对于findOne(),它是一个单个文档,对于find()它是文档列表,对于count()它是文档数,对于update()它是受影响的文档数等等。

现在让我们看看当没有回调被传递时会发生什么:

  let Schema = mongoose.Schema;
    let schema = new Schema({
        name:String,
        age:Number,
        occupation:String
    });
    let Person = mongoose.model('Person',schema);
    //找出一条名叫"noshower"的文档
    let query = Person.findOne({name:'noshower'});
    //选择"name""occupation"字段
    query.select('name occupation');
    //稍后执行查询
    query.exec(function(err,person){
        if(err){
            return console.error(err);
        }
        console.log(person);//{ _id: 587a02251d73bb1ec61ace04, name: 'noshower', occupation: 'teacher' }
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指南 假设以下代码都运行在 Schema 定义 schema 在Mongoose中,任何事情都是从Schema(模...
    打铁大师阅读 5,583评论 1 8
  • Mongodb 配置选项 通常在mongod.conf中 配置文件 设置了配置文件后启动时以自定义的配置文件启动:...
    AkaTBS阅读 1,090评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,868评论 18 139
  • 原文地址 本文简单的介绍了数据库,以及如何在 Node/Express 中应用他们。之后展示如何使用Mongoos...
    前端幼儿班阅读 5,193评论 1 5
  • 入了这一行,才真的发现国内咨询行业真是沙泥俱下鱼龙混杂。以前总觉得谈判是件多么隆重的事情,要有个谈判桌,双方都精心...
    yoyoDbh阅读 250评论 0 0