zoukankan      html  css  js  c++  java
  • 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() 返回总文档数
  • 相关阅读:
    GDAL指定自定义的金字塔目录
    同一个脚本在SQLPLUS和SQLDEV上的不同
    【LeetCode-面试算法经典-Java实现】【062-Unique Paths(唯一路径)】
    unity3d的playmaker插件使用教程,三、对象出入触发,声音播放
    MapReduce实现矩阵乘法
    Nginx+Tomcat搭建高性能负载均衡集群
    怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32
    <html>
    实战c++中的vector系列--vector&lt;unique_ptr&lt;&gt;&gt;初始化(全部权转移)
    [Mac] mac linux 多线程下载利器 axel
  • 原文地址:https://www.cnblogs.com/Fcode-/p/12986422.html
Copyright © 2011-2022 走看看