mongoose如何filter过滤数据

原文地址:http://www.fidding.me/article/17

简介

Mongoose是在NodeJS开发中对mongodb进行便捷操作的对象模型工具。

当我们获取数据的时候,通常需要对数据进行筛选过滤以避免泄漏重要信息,下面我将简单介绍如何使用mongoose进行数据筛选过滤(filter)。

直接数据过滤

直接数据意思就是我们拿到的就是存放在mongodb数据库中的数据,没有进行外健populate过的数据。
代码如下

Admin.findById(id)    .exec(function (err, result){        ...    })

通过id查找admin,在这里admin的所有字段信息将会全部被读取。

那么,如何过滤其它字段,只显示name以及phone字段呢,代码如下:

Admin.findById(id, 'name phone')    .exec(function (err, result){        ...    })

在这里,通过查询函数findById的第二个参数保留name以及phone字段,其它字段将被过滤,这个方法同样适用于find,findOne等mongoose查询语句。

间接数据过滤

间接数据意思是我们所需要过滤的数据是populate而来的外键绑定数据。
代码如下:

Admin.findById(id)    .populate('shop')    .exec(function (err, result){        ...    })

这段代码是通过id查找admin并且admin所绑定的外健shop的所有数据也会一并查询出来。

那么如何过滤shop数据只显示name以及logo字段呢,代码如下:

Admin.findById(id)    .populate({        path: 'shop',        select: 'name logo'    }).exec(function (err, result){        ...    })

在这里使用populate对象形式的select保留所需要的字段名称。

混合数据

意思是所执行查询语句中既有直接数据又有间接数据,过滤代码如下:

Admin.findById(id, 'name phone shop')    .populate({        path: 'shop',        select: 'name logo'    })    .exec(function (err, result){        ...    })

在这里,查询出admin数据仅包含name,phone以及shop字段,其中shop字段仅包含name和logo字段,既过滤了直接数据又过滤了间接数据。

总结

happy joining !

关键字:node.js, mongodb, mongoose, 过滤

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部