首页 > 数据库技术 > 详细

数据库mongodb 的增删改查

时间:2020-07-15 22:44:47      阅读:54      评论:0      收藏:0      [点我收藏+]

数据库mongodb

    MongoDB是基于分布式文件存储的数据库。

数据库命名:

    通过标识符,一般是utf-8字符串,不能为空,不能用local/admin/config这三个。

文档

      文档是一个键值(key-value)对MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。

集合

    集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。

    集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。集合的命名不能是空字符串,也不能出现-,0等,不能以system,$开头

ObjectId

  ObjectId 类似唯一主键,可以很快的去生成和排序.

  MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象。

 

MongoDB安装

  一、下载地址https://www.mongodb.com/download-center/community

  二、命令行下运行 MongoDB 服务器为了从命令提示符下运行MongoDB服务器,你必须从MongoDB目录的bin目录中执行mongod.exe文件。

      终端中进入 C:\Program Files\MongoDB\Server\4.0\bin 目录。

      然后终端中输入mongod就可以启动MongoDB服务器。

      如果启动不成功,可能是没有db的路径,所以指令输入

      mongod --dbkpath 创建db文件的路径E:/db

      当你看到 waiting for connections on port 27017 的时候就是数据库启动成功了。

  三、控制台中使用mongo(终端中进入mongo的安装目录的bin下)

      命令行操作 Mongodb

MongoDB的可视化工具:Robo3T 或者noSql booster

MongoDB 命令

    db.集合名(文件名).方法名

插入文档 insert()

    db.post.insert()//在post中插入文档

    db.psot.insertOne({})//在post中插入一个文档

    db.post.insertMany({},{})//在post中插入多个

查询文档 find()

    db.post.find({})//不传参数是查找全部,传入键值是查询包含该键值的文档

    db.post.findOne({})//只查找一条

更新文档 update()

    db.posts.update({title: "aaa"}, {$set: {age: ‘changeName‘}});

        第一条是查询到符合条件的文档,第二条是更新的内容     $set后面是修改的内容

    db.post.updata({name: ‘Lisi‘}, {$inc: {age: 50}});

        $inc 是让其自己正加上响应的数字

删除文档delete()

    db.post.delete({})//不传参数是删除全部,传入键值是删除包含该键值的文档

    db.post.deleteOne({})//传入键值,只删除一个

条件查询

      范围查询  

关键字

含义

=

相等

$gt

>大于号

$lt

< 小于号

$lte

=< 小于等于号

$gte

>= 大于等于号

 

例:

    查询age = 22的记录

      db.userInfo.find({"age": 22}); 相当于: select * from userInfo where age = 22;

    查询age > 22的记录  

      db.userInfo.find({age: {$gt: 22}}); 相当于:select * from userInfo where age >22;

    查询age < 22的记录

      db.userInfo.find({age: {$lt: 22}}); 相当于:select * from userInfo where age <22;

    查询age >= 25的记录

       db.userInfo.find({age: {$gte: 25}}); 相当于:select * from userInfo where age >= 25;

    查询age <= 25的记录

      db.userInfo.find({age: {$lte: 25}});

    查询age >= 23 并且 age <= 26  

      db.userInfo.find({age: {$gte: 23, $lte: 26}});

 

 模糊查询

    查询name中包含mongo的数据

         db.userInfo.find({name: /mongo/}); //相当于%% select * from userInfo where name like ‘%mongo%’;

 并且条件: 查找时一个对象中传入两个键值,中间用逗号隔开,

      db.userInfo.find({name: ‘zhangsan‘, age: 22【】});相当于:select * from userInfo where name = ‘zhangsan‘ and age = ’22‘;

 或者条件 {$or :[{},{}]}满足一个条件就能查出来 

      db.userInfo.find({$or: [{age: 22}, {age: 25}]});相当于:select * from userInfo where age = 22 or age = 25;

 筛选数据

      查询指定列name、age数据,在需要查询的对象之后再加入一个对象

        { name:1}  表示显示name这一项。

          db.user.find({}, {name: 1, age: 1});

              //相当于:select name, age from userInfo;

    查询指定列name、age数据, age > 25

        db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});

           相当于:select name, age from userInfo where age >25;

limit与skip方法

查询前几条数据 limit()

    例:查询前5条数据

        db.userInfo.find().limit(5);     相当于:select top 5 * from userInfo;

查询几条之后的数据 skip()

    例: 查询10条之后的数据

        db.userInfo.find().skip(10);    相当于:select * from userInfo where id not in (    select top 10 * from userInfo );

限制数据量/几条数据

    例:db.userInfo.find().limit(10).skip(5);

排序sort()

       1代表升序,-1代表降序

      例:   升序:db.userInfo.find().sort({age: 1});

         降序:db.userInfo.find().sort({age: -1});

Mongoose的使用

      安装mongoose  npm i mongoose

引入模块,连接数据库

      创建models文件夹,新建index.js

let mongoose = require(‘mongoose‘);

// 链接数据库
mongoose.connect(‘mongodb://localhost:27017/zhili‘).then(data=>{

    console.log("链接成功")

}).catch(err=>{

    console.log(err)

});

地址的冒号后面是启动数据库之后的那个返回的数据27017。在后面的/zhili是选择想要链接的数据库

 

schema(提要,刚要,表)

 

// 新建表(集合)
let Schema = mongoose.Schema

// 新建文章表,命名规则是
let ArticleSchema = new Schema({
    title:String,//文章标题 title 是字符串类型
    body:String,//文章内容
    author:String,
    comments:[{body:String,date:Date}],//评论
    hidden:{
        type:Boolean,// 文章是否能被普通用户看见
        default:false
    },
    favs:{
        type:Number,//默认 点赞次数0
        default:0
    }
}

,{
    timestamps:true//增加两个字段 记录 创建时间  修改时间

})

根据表明和结构得到数据库模型

// 根据表名 和 表结构  得到数据库模型
let Article  = mongoose.model(‘Article‘,ArticleSchema)
// 根据数据库模型 操作 数据 增删改查

插入数据

// 插入数据

let a1 = new Article({
    title:"aaa",
    body:"HDSDFJKDF",
    author:"DNASJFN",
    comments:[{body:"FSLKDJF",date:new Date()}],
    favs:888
})
a1.save().then(res=>{
    console.log("插入成功"+res)
}).catch(err=>{
    console.log(err)
})

删除数据

//删除

//根据id删除
Article.deleteOne({_id:"5f0eaf26dea3bc22d8e77843"}).then(res=>{
    console.log(res)
})
//根据id查询 并且删除
Article.findByIdAndDelete(‘5f0eaf890248d70ac001ccb8‘).then(res=>{
    console.log(res)
})

修改数据

// 修改
Article.updateOne({_id:"5f0eaf8c2367ce1a206332e3"},{body:"今天周三"}).then(res=>{

    console.log(res)

})

Article.updateOne({_id:"5f0eaf8c2367ce1a206332e3"},{$inc:{favs:1}}).then(res=>{

    console.log(res)

})

查询数据。findById()

//

Article.findById(‘5f0eaf8c2367ce1a206332e3‘).then(res=>{

    console.log(res)

})

Article.findOne({title:"11",body:"22"}).then(res=>{

    console.log(res)

})

 

在终端中返回值

Article.find().then(res=>{

    console.log(res)

})

 

 

数据库mongodb 的增删改查

原文:https://www.cnblogs.com/52580587zl/p/13308160.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!