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