Mongoose 模型提供了 find, findOne, 和 findById 方法用于文档查询。
Model.find
Model.find(query, fields, options, callback)// fields 和 options 都是可选参数
简单查询
Model.find({'csser.com':5},function(err, docs){// docs 是查询的结果数组 });
只查询指定键的结果
Model.find({},['first','last'],function(err, docs){// docs 此时只包含文档的部分键值})
Model.findOne
与 Model.find 相同,但只返回单个文档
Model.findOne({ age:5},function(err, doc){// doc 是单个文档});
Model.findById
与 findOne 相同,但它接收文档的 _id 作为参数,返回单个文档。_id 可以是字符串或 ObjectId 对象。
Model.findById(obj._id,function(err, doc){// doc 是单个文档});
Model.count
返回符合条件的文档数。
Model.count(conditions, callback);
Model.remove
删除符合条件的文档。
Model.remove(conditions, callback);
Model.distinct
查询符合条件的文档并返回根据键分组的结果。
Model.distinct(field, conditions, callback);
Model.where
当查询比较复杂时,用 where:
Model.where('age').gte(25).where('tags').in(['movie','music','art']).select('name','age','tags').skip(20).limit(10).asc('age').slaveOk().hint({ age:1, name:1}).run(callback);
Model.$where
有时我们需要在 mongodb 中使用 javascript 表达式进行查询,这时可以用 find({$where : javascript}) 方式,$where 是一种快捷方式,并支持链式调用查询。
Model.$where('this.firstname === this.lastname').exec(callback)
Model.update
使用 update 子句更新符合指定条件的文档,更新数据在发送到数据库服务器之前会改变模型的类型。
var conditions ={ name:'borne'}, update ={ $inc:{ visits:1}}, options ={ multi:true};Model.update(conditions, update, options, callback)
注意:为了向后兼容,所有顶级更新键如果不是原子操作命名的,会统一被按 $set 操作处理,例如:
var query ={ name:'borne'};Model.update(query,{ name:'jason borne'}, options, callback)// 会被这样发送到数据库服务器Model.update(query,{ $set:{ name:'jason borne'}}, options, callback)
查询 API
如果不提供回调函数,所有这些方法都返回 Query 对象,它们都可以被再次修改(比如增加选项、键等),直到调用 exec 方法。
var query =Model.find({}); query.where('field',5); query.limit(5); query.skip(100); query.exec(function(err, docs){// called when the `query.complete` or `query.error` are called// internally});
[完]
相关推荐
Mongoose提供了一系列内置的方法,如`save()`, `find()`, `findOne()`, `updateOne()`, `deleteOne()`等,它们覆盖了常见的CRUD(创建、读取、更新、删除)操作。例如,你可以这样创建一个新文档: ```javascript ...
查(Find):`find()`, `findOne()`, `findById()`等方法用于查询数据。 ```javascript // 查询所有用户 User.find({}, (err, users) => { if (err) console.error(err); else console.log(users); }); // 查询...
查询操作通常基于 Model 进行,如 `Model.find()`, `Model.findOne()`, `Model.findById()`, `Model.where()` 等。在示例中,`impressionModel.find(callback)` 会查找集合中的所有文档,并在回调函数中返回查询...
**读取 (Read)**:可以使用 `find()`, `findOne()`, 或 `findById()` 等方法来查询数据: ```javascript // 查询所有用户 const allUsers = await User.find({}); console.log(allUsers); // 查询第一个匹配的用户...
总的来说,Mongoose的索引功能可以帮助优化查询性能,内置方法提供了丰富的数据库操作选项,而静态方法和实例方法则允许开发者自定义行为,以适应各种复杂的业务场景。正确理解和使用这些特性,对于开发高效、可维护...
- 查询数据:`User.find()`, `User.findOne()`, `User.findById()`等方法用于检索数据。 - 更新数据:`User.findByIdAndUpdate()`和`User.findByIdAndUpdate()`用于更新指定文档。 - 删除数据:`User....
此外, Model.count() 、 Model.find() 、 Model.findOne() 、 Model.findById()和其他静态方法被扩充为默认情况下仅显示非垃圾实例。 您仍然可以通过使用新的静态方法Model.findTrashed() 、 Model....
4. **读取(Read)**:`find()`, `findOne()`, `findById()`等方法用于查询数据。例如,查找所有用户: ```javascript const users = await User.find({}); ``` 或者根据ID查找特定用户: ```javascript const...
- **查询**:`find`, `findOne`, `findById`等方法用于查询数据。例如,查找所有文章: ```javascript Post.find({}, (err, posts) => { if (err) console.error(err); else console.log(posts); }); ``` - ...
- **读取(Read)**:`model.find()`, `model.findOne()`, `model.findById()`等方法用于查询数据。 - **更新(Update)**:`model.findByIdAndUpdate()`, `model.findByIdAndUpdate()`用于更新文档。 - **删除...
Express的路由可以接收查询参数,然后Mongoose通过`find()`, `findOne()`, 或者`findById()`等方法获取数据。这些查询可以返回单个文档或多个文档的数组。 3. **更新(Update)**:更新操作涉及找到特定的文档并修改...
5. **查询(Query)**:使用`find`、`findOne`、`findById`等方法进行查询。例如,查找所有用户: ```javascript User.find({}, (err, users) => { if (err) console.error(err); else console.log(users); }); ...
Mongoose通过模型对象的`find()`, `findOne()`, `findById()`, `where()`等方法实现了多种查询方式,可以根据不同的条件筛选和获取数据。 3. **更新(Update)**:修改数据库中已存在的记录。Mongoose提供了`update...
在IT行业中,MongoDB是一种非常流行的NoSQL数据库系统,它以JSON格式存储数据,而Mongoose是用于Node.js的一个强大的对象数据模型(ODM),它为MongoDB提供了强大的查询构建器和类型安全的Schema设计。本项目"crud-...
- 读取(GET):`UserModel.find()`、`UserModel.findById()`或`UserModel.findOne()`用于检索用户数据。 - 更新(PUT):`UserModel.findByIdAndUpdate()`用于更新指定ID的用户信息。 - 删除(DELETE):`UserModel...
查询数据可以通过`find`, `findOne`, `findById`, `where`等方法实现。例如,获取所有商品: ```javascript Good.find({}, (err, products) => { if (err) return console.error(err); console.log('All ...
`find()`, `findOne()`, `findById()`等Mongoose方法用于查询数据。 - **更新(Update)**:通过`app.put()`或`app.patch()`处理PUT和PATCH请求,`updateOne()`, `updateMany()`等方法用于更新数据库中的记录。 - **...
可以是单个文档(`findById()`, `findOne()`)或多个文档(`find()`, `aggregate()`)。 3. **更新(Update)**: 使用PUT或PATCH请求,客户端指定要更新的文档ID,并提供更新数据。服务器使用`findByIdAndUpdate()`或...
查询数据可以使用`find`, `findOne`, `findById`等方法: ```javascript User.find({}, (err, users) => { if (err) console.error(err); else console.log('All users:', users); }); User.findOne({ name: '...