美文网首页mongoDBmongoose
mongoose学习笔记5之Queries

mongoose学习笔记5之Queries

作者: 打铁大师 | 来源:发表于2017-01-14 19:43 被阅读31次

假设以下代码都运行在

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' }
    });

相关文章

  • mongoose学习笔记5之Queries

    假设以下代码都运行在 Queries 文档可以通过模型的几个静态辅助方法检索。涉及指定查询条件的任何模型方法可以以...

  • Using Async/Await with Mongoos

    Queries in Mongoose 4.x have a .then() function, so you d...

  • HTML5学习笔记之表格标签

    HTML5学习笔记之表格标签 其他HTML5相关文章 HTML5学习笔记之HTML5基本介绍 HTML5学习笔记之...

  • HTML5学习笔记之表单标签

    HTML5学习笔记之表单标签 其他HTML5相关文章 HTML5学习笔记之HTML5基本介绍 HTML5学习笔记之...

  • HTML5学习笔记之基础标签

    HTML5学习笔记之基础标签 其他HTML5相关文章 HTML5学习笔记之HTML5基本介绍 HTML5学习笔记之...

  • Node 第三课

    mongoose 笔记 连接字符串mongoose.connect(DB_URL); 链接成功mongoose.c...

  • mongoose 学习笔记

    一、介绍 1. 概述 mongoose 模块用于简化 node 与数据库 mongodb 之间的操作,目的是通过简...

  • mongoose学习笔记

    首先是基础crud操作 查询简单查询条件查询 插入 更新 查询 简单查询 mongoose: 条件查询 (>) 大...

  • Mongoose学习笔记

    Mongoose介绍 一、mongoose 介绍 Mongoose是在node.js异步环境下对mongodb进行...

  • mongoose学习笔记

    快速上手 前提 安装 MongoDB 和 Node.js 本次学习的 mongoose 版本是 5.4 Mongo...

网友评论

    本文标题:mongoose学习笔记5之Queries

    本文链接:https://www.haomeiwen.com/subject/tvoebttx.html