📅  最后修改于: 2023-12-03 15:17:42.846000             🧑  作者: Mango
Mongoose 是一个 Node.js 中的 MongoDB 非官方驱动,提供了良好的 API 和模式化的操作方式。本文将介绍如何使用 Mongoose 查找多个文档并进行更新。
要查找多个文档,可以使用 Mongoose 的 find
方法。例如,我们要查找年龄为 25 的所有人:
Person.find({ age: 25 }, function(err, people) {
if (err) console.error(err);
console.log(people);
});
这里的 Person
是一个 Mongoose 模型,表示一个人的文档。find
方法接受一个查询条件和一个回调函数,回调函数的第一个参数是错误对象,第二个参数是查询结果。如果没有错误,查询结果是一个包含所有满足查询条件的文档的数组。
要更新多个文档,可以使用 Mongoose 的 updateMany
方法。例如,我们要将年龄为 25 的所有人的年龄增加 1:
Person.updateMany({ age: 25 }, { $inc: { age: 1 } }, function(err, result) {
if (err) console.error(err);
console.log(result);
});
这里的第一个参数是查询条件,第二个参数是更新操作,第三个参数是回调函数。更新操作使用了 MongoDB 的更新操作符 $inc
,表示将 age 属性增加 1。
回调函数的第一个参数是错误对象,第二个参数是更新操作的结果。更新操作的结果是一个对象,包含了更新的数量和其他信息。
要组合查询和更新操作,可以使用 find
方法来查询文档,然后在回调函数中执行 updateMany
方法来更新文档。
例如,我们要将所有名字以 "J" 开头的人的年龄增加 1:
Person.find({ name: /^J/ }, function(err, people) {
if (err) console.error(err);
console.log(people);
var ids = people.map(function(p) { return p._id; });
Person.updateMany({ _id: { $in: ids } }, { $inc: { age: 1 } }, function(err, result) {
if (err) console.error(err);
console.log(result);
});
});
这里的查询条件使用了正则表达式,表示名字以 "J" 开头。查询结果保存在 people
数组中,然后使用 map
方法将每个文档的 _id
属性提取出来,构成一个新数组 ids
。最后,用 updateMany
方法更新所有 _id
属性在 ids
数组中的文档。
以上就是使用 Mongoose 查找多个并更新的方法。如果您还不熟悉 Mongoose,请查阅其官方文档了解更多信息。