Mongoose 是一个用于 Node.js 的优秀 MongoDB 对象模型工具。在实际应用中,我们需要对 MongoDB 数据库中的数据进行查询、修改和删除等操作,而 Mongoose 中的查询函数提供了很方便的方式来执行这些操作。
查询函数介绍
Mongoose 的查询函数可以分为两类:静态查询和实例查询。静态查询是直接对数据集合(collection)进行的操作,而实例查询是在数据集合的文档(document)上进行的操作。
静态查询有以下几个常用的函数:
find(conditions, [projection], [options], [callback])
:根据指定条件查询文档,以数组形式返回结果。findOne(conditions, [projection], [options], [callback])
:根据指定条件查询文档,返回第一个匹配到的结果。count(conditions, [callback])
:根据指定条件查询文档数量。
实例查询有以下几个常用的函数:
findById(id, [projection], [options], [callback])
:根据文档的_id
属性查询文档。findOne(conditions, [projection], [options], [callback])
:与静态查询的findOne()
函数相同。
除了以上介绍的常用函数外,Mongoose 还提供了丰富的查询方法,如 $in
、$gt
、$lt
等用于过滤数据的操作符,以及 populate()
用来填充其他集合中的相关文档。
查询函数示例
下面通过实例来演示 Mongoose 中的查询函数的应用。
find()
假设有以下数据集合:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ----- ------- ---- ------- ------ -------- --- ----- ---- - ---------------------- ------------ ----- ----- - - - ----- ------ ---- --- ------ ----------- -------- -- - ----- ------ ---- --- ------ ------------ ------------ -- - ----- ------- ---- --- ------ ------------ -------------- - -- ---------------------- ------------- - -- ----- - ----------------- - ---- - ------------------- ----------- - ---
利用 find()
函数查询所有用户:
User.find({}, function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
查询年龄大于 20 岁的用户:
User.find({ age: { $gt: 20 } }, function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
查询姓名为 Tom 的用户:
User.find({ name: 'Tom' }, function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
查询喜欢音乐的用户:
User.find({ hobby: 'music' }, function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
查询姓名为 Tom、喜欢音乐的用户:
User.find({ name: 'Tom', hobby: 'music' }, function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
findOne()
查询年龄最大的用户:
User.findOne().sort({ age: -1 }).exec(function(err, data) { if (err) { console.log(err); } else { console.log(data); } });
查询适合 Amy 的好友:
-- -------------------- ---- ------- -------------- ----- ----- ------------------------------------- ----- - -- ----- - ----------------- - ---- - ----------- ------ - ---- ---------- -- ----- - ---- ----- --- ------------- ----- - -- ----- - ----------------- - ---- - ------------------ - --- - ---
综合应用
查询年龄最大的用户及其不同爱好的数量:
-- -------------------- ---- ------- --------------------- ---- -- --------------------- ----- - -- ----- - ----------------- - ---- - ----- ------- - --- ------ ----------------------- -- ------------------- ----------------- ------------ --- --------------- ----------- - ---
总结
本篇文章介绍了 Mongoose 中的查询函数,包括静态查询和实例查询两种类型的函数。在使用 Mongoose 时,了解查询函数是非常必要的,这有助于我们高效地操作 MongoDB 数据库,并提高开发的效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/647721f0968c7c53b03b1f4b