查询有带callback和不带callback两种方式

所有mongoose的callback都是这种格式: callback(err, result)

var Person = mongoose.model('Person', yourSchema);

Person.findOne({'name.last':'Ghost'}, 'name occupation', function(err, person){
if(err) return handleError(err);
console.log(person.name.first + ' ' + person.name.last + ' ' + person.occupation);
});

看看不带callback怎么查询

var query = Person.findOne({'name.last': 'Ghost'});

///只查找name和occupation字段
query.select('name occupation'); query.exec(function(err, person){
if(err) return handleError(err);
res.send(person);
}):

Query实例能使我们构造自己的查询

Person
.find({occupation: /host/})
.where('name.last').equal('Ghost')
.where('ag').gt(17).lt(66)
.limit(10)
.sort('-occupation')
.select('name occupation')
.exec(callback);

  

[译]Mongoose指南 - 查询的更多相关文章

  1. [译]Mongoose指南 - Model

    编译你的第一个model var xxSchema = new Schema({name: 'string', size: 'string'}); var Tank = mongoose.model( ...

  2. [译]Mongoose指南 - Schema

    定义schema 用mongoose的第一件事情就应该是定义schema. schema是什么呢? 它类似于关系数据库的表结构. var mongoose = require('mongoose'); ...

  3. [译]Mongoose指南 - Population

    MongoDB没有join, 但是有的时候我们需要引用其它collection的documents, 这个时候就需要populate了. 我们可以populate单个document, 多个docum ...

  4. [译]Mongoose指南 - Connection

    使用mongoose.connect()方法创建连接 mongoose.conect('mongodb://localhost/myapp'); 上面的代码是通过默认端口27017链接到mongodb ...

  5. [译]Mongoose指南 - 验证

    开始前记住下面几点 Validation定义在SchemaType中 Validation是一个内部的中间件 当document要save前会发生验证 验证不会发生在空值上 除非对应的字段加上了 re ...

  6. [译]Mongoose指南 - Plugin

    Schema支持插件, 这样你就可以扩展一些额功能了 下面的例子是当document save的时候自定更新最后修改日期的出插件 // lastMod.js module.exports = expo ...

  7. [译]Mongoose指南 - 中间件

    中间件是一些函数, 当document发生init, validate, save和remove方法的时候中间件发生. 中间件都是document级别的不是model级别的. 下面讲讲两种中间件pre ...

  8. [译]Mongoose指南 - Document

    更新 有几种方式更新document. 先看一下传统的更新方法 Tank.findById(id, function(err, tank){ if(err) return handleError(er ...

  9. mongoose模糊查询

    注:nodejs服务器时候遇到了这样一个bug,就是mongoose模糊查询时候,我需要查询的数据时自定义id_(number类型)以及用户名(string类型). bug如下: nodejs服务器报 ...

随机推荐

  1. AngularJs 键盘事件和鼠标事件

    ngKeydown/ngKeypress/ngKeyup 该指令在按键按下/按键按下/按键松开时执行指定表达式. ngKeydown和ngKeypress略有不同,目前的测试是ngKeypress针对 ...

  2. 淘宝npm镜像

    来源:https://cnodejs.org/topic/4f9904f9407edba21468f31e 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在 ...

  3. POJ3281 Dining(拆点构图 + 最大流)

    题目链接 题意:有F种食物,D种饮料N头奶牛,只能吃某种食物和饮料(而且只能吃特定的一份) 一种食物被一头牛吃了之后,其余牛就不能吃了第一行有N,F,D三个整数接着2-N+1行代表第i头牛,前面两个整 ...

  4. JS-DOM2级封装练习题--点击登录弹出登录对话框

    <!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...

  5. 使用Navicat导入导出表的数据做测试(转载)

    当我们对MySQL数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...

  6. js008-BOM

    js008-BOM 本章内容: 1.理解window对象-BOM的核心 2.控制窗口.框架和弹出窗口 3.利用location对象中的页面信息 4.使用navigation对象了解浏览器 ECMASc ...

  7. restClient访问SSL

    IRestClient client = new RestClient("https://xxx.com/aa/bb"); "; ); ServicePointManag ...

  8. git-tag

    标签可以针对某一时间点的版本做标记,常用于版本发布. 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签 $ git tag -l 'v0.1.*' # 搜索符合模式的标签 打标签 g ...

  9. 内嵌DB

    SQLLite H2 MySQL Embeded 等 比较项目 SQLite H2 database engine MySQL Embedded Footprint 350KiB ~1MB <2 ...

  10. Tomcat 用户访问控制

    要设置Tomcat下的Host都有哪些ip能访问,可以在conf/server.xml的相应Host元素内加Value标签,示例: <Valve className="org.apac ...