记录一下mongodb的语句

116 阅读1分钟

mongodb的结构主要是 一个collection 是一张表,一个document就是一条数据(我也不是很清楚) 一个db(数据库) 是一个或多个collection的集合 mongod 开启数据库服务器 mongo 链接数据库服务器 新建一个collection 或切换数据库

`use juejin("数据库名称")

show dbs 查看所有数据库`

db.dropDatabase() 删除数据库
``

db.collection.drop() 删除集合 db.collection.rename()



增 db.users("集合名").insert({age:"",name:""})

删 db.users("集合名").remove({id:""})

改 db.users("集合名").update({id:""},{$set:{name:"",age:""})

查 db.users("集合名").find({id:""}) (不传入参数则会返回整个collection)



mongoose 添加数据 列出了mongodb支持的数据类型 name 属性不能为空,前端表单需要做必填校验

const mongoose = require("mongoose")
// 协议     IP      端口    名称
mongoose.connect("mongodb://127.0.0.1:27017/bilibili")
// 连接成功后回调 on once(事件回调函数只执行一次)
mongoose.connection.once("open", () => {
    console.log("连接成功");
    //  创建文档的结构对象
    // 确定表字段
    let BookSchema = new mongoose.Schema({
       name: {
            type: String,
            required: true
        }, // 字段校验
        author: {
            type: String,
            default: "匿名", //默认值

        },
        gender: {
            type: Number,
            enum: [0, 1] //枚举 gender只能是1 或者 2
        },
        style: {
            type: String,
            enum: ["言情", "末世"]
        }, 
        username: {
            type: String,
            unique: true  // 用户名不能重复
        },
        price: Number,
        is_hot: Boolean,
        date: Date,
        arr: Array,
        test:mongoose.Schema.Types.Mixed, // 任意类型
        id:mongoose.Schema.Types.ObjectId,  // 文档iD
        number:mongoose.Schema.Types.Decimal128 // 高精度类型
    })
    //  对文档进行操作的封装对象
    let BookModel = mongoose.model('books', BookSchema)

    // 调用方法
    BookModel.create({ name: "围城", author: "钱钟书",gender:1, price: 19, is_hot: true, date: new Date(), arr: [1, 2, 3] }).then((err, data) => {

        if (err) {
            console.log(err);
            return
        }

        // 成功 data为插入的文档对象
        console.log(data);
        // 项目中不会添加此代码
        // mongoose.disconnect();

    })



})
// 连接错误后回调
mongoose.connection.once("error", () => {
    console.log("连接失败");
})
// 连接关闭后回调
mongoose.connection.on("close", () => {
    console.log("连接关闭");
})

// 关闭

// setTimeout(() => {
//     mongoose.disconnect()
// }, 2000);

条件语句查询 正则表达式查询

  //6. 创建模型对象  对文档操作的封装对象
    let BookModel = mongoose.model('novel', BookSchema);

    // 根据条件获取 $lt = less than      获取价格小于20 的书籍
    // let res = await BookModel.find({ price: { $lt: 20 } })

    // 条件运算符 
    //  $gt > $lt < $gle >= $lte <= $ne !==
    // 逻辑运算符 $or || $and && 
    // 根据条件获取 $gt = 大于 more than      获取价格大于20 的书籍
    let res = await BookModel.find({ price: { $gt: 20 } })
    
        let res = await BookModel.find({name:/三/ })
    // let res = await BookModel.find({name:new RegExp('三') })
    console.log(res);

个性化读取

     //6. 创建模型对象  对文档操作的封装对象
    let BookModel = mongoose.model('novel', BookSchema);
    // 只返回自己需要的字段
    // let res = await BookModel.find().select({ name: 1, author: 1 })
    // 数据排序 只要name和price,同时不要_id                sort 排序  升序 1 倒序 -1  
    // let res = await BookModel.find().select({name:1,price:1,_id:0}).sort({price:1})

    // 数据截取 主要做分页 skip 跳过3个 limit 只返回3个 
    let res = await BookModel.find().select({name:1,price:1,_id:0}).sort({price:1}).skip(3).limit(3)

详细的操作可以访问www.runoob.com/mongodb/mon…