MongoDB 查找、更新、模糊查找等

MongoDB作为文档型非关系数据库,和Oracle、Mysql等关系型数据库类似,被认为是最像关系型数据库的非关系型数据库。当然,也有不同的地方,比如关系型数据库的‘数据表’,在MongoDB里叫做‘数据集合’,关系型数据库数据表里的每行数据,在MongoDB里是一个个的数据文档,也因此MongoDB被称为文档型数据库。以下是在日常代码过程中用到的 MongoDB 常用操作:

首先,以引入 UserModel 为例:

const UserModel = require('../models/user')

模糊查找:

await UserModel.find({ username: { $regex: keyword } })

注: 查找 UserModel 里,username 包含 keyword 的所有文档。

向集合中插入数据:

方法一:

let userEntity = new UserModel({ username, password, telnumber });
let userInfo = await userEntity.save();

注: UserModel 为数据模型, 包含username、 password、 telnumber  三个字段

方法二:

const userInfo = await UserModel.create(newUserInfo);

注: newUserInfo 为对象, 包含 username、 password、 telnumber  三个属性。

更新单个文档:

方法一:

 UserModel.udpateOne({ _id: userInfo._id }, { username, telnumber });  //username、telnumber 为新的值

方法二:

await UserModel.findOneAndUpdate({ username: '张三' }, { $set: { telnumber: '1234567890' } });

注: 将张三的手机号更新为:1234567890

批量更新文档:

将用户集合中所有 telnumber 字段为空的文档, telnumber 更新为  '1234567890' :

UserModel.updateMany({ telnumber : '' }, { $set: { telnumber : '1234567890' } })

查询集合中的第一条插入的数据:

UserModel.find({}).limit(1)   // 方法一: find({})

UserModel.findOne({})         // 方法二: findOne({})查询第一条数据

查询集合中的最后一条插入的插入数据:

UserModel.find({}).sort({_id: -1}).limit(1)   //_id为插入文档时自带的字段,具有时间排序性

删除单个文档:

方法一:

UserModel.findOneAndDelete({ username: '张三' })

 方法二:

UserModel.deleteOne({ username: '张三' })

注: 删除用户名为 张三 的文档。

同时删除多个文档:

其中,Tel = ['123', '456', '789']

await UserModel.deleteMany({ Tel })

注: 同时删除 UserModel 里, Tel 为 123, 456, 789 的文档。

计算find({})返回的文档个数:

let result = UserModel.find({}).countDocuments()   // .countDocuments() 返回总文档数
原文地址:https://www.cnblogs.com/Fcode-/p/12986422.html