数据库操作语法
数据库操作
-show dbs
查询本地数据库列表
-db
查询当前所在数据库
-use 数据库名称
创建或切换到数据库
-db.dropDatabase()
删除当前数据库
集合操作
-db.getCollectionNames()
查询当前数据库中所以集合名称
-db.集合名.insert({键值对组},{键值对组},...)
在集合中插入多条文档
db.musics.insert([{name: "Love story", author: "Ryuko"},{name:"Firefly",author: "Lily"},{name: "summer sunshine",author: "Ryuko"}])
-db.集合名.find(条件,显示字段)
查询集合中满足条件的文档
如:
db.users.find({age:{in: [20,30]})
db.musics.find({author:{ne:"Love story"}})
db.col.find({title:/教regex:/QQ/ig}} // 通过正则表达式进行模糊查询
db.getCollection('foods').find({}).skip(5).limit(5).sort({price: 1}) // 先递增排序,再跳过5条,再取5条
db.order.aggregate([{lookup: {from: "user", localField: "uid",foreignField: "_id",as: "user_docs"}}]); // 通过$lookup多表查询,相当于左连接查询
localField:在输入文档中的查找字段
from:需要连接的集合
foreignField:需要在from集合中查找的字段
as:输出的字段名字
-更新update
db.table.updateMany({}, {set: {"score": 80}})
db.musics.updateMany({name: "Firefly"},{unset:{"age": 15}}) # 删除所有 age 字段
db.table.updateOne({"age":18}, {pushAll: {"num": 2, 3, 4}}) //增加操作 (前提: 增加的字段 key: value 中 value 类型为 Array)
db.table.updateOne({"age":18}, {pullAll: {"num": 2, 3}}) // 指定删除Array中的某一个元素
db.stu.updateOne({name:"ran"},{pop: {"num": -1}}) # 删除第一个元素
注意: 只要满足条件,就会将Array中所有满足条件的数据全部清除掉
db.table.updateOne({name:"ran", "num": 2},{":"燃"}})
db.table.updateOne({age:18,"c.name":"python"}, {.score": 10}})
db.table.updateOne({name:"ran"},{unset: {"class.classtype": "python"}})
$关键字
- "$" 在 update 中加上关键字就是修改器
- 单独出现的 "set: {"num." 字符代表了符合条件元素的下标, 位置
2.使用 update, 满足条件的数据下标位置就会传递给 "$" 字符, 相当于对这个位置的元素进行更新操作
3.首先会寻找示例 Array 中的第一个 2, 再次操作会找下一个 2
-db.集合名.remove(条件)
db.users.remove({username: "Ryuko"})
db.users.remove({age:11},{justOne:true}) // 只移除所有结果中的一个
连接数据库
1.连接模块
const mongoose = require('mongoose');
mongoose.set('useCreateIndex', true); //加上这个, 解决(node:12136) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
mongoose.connect('mongodb://localhost/myHomeKitchen',{ useNewUrlParser: true, useUnifiedTopology: true });
let db = mongoose.connection;
db.on('error', console.error.bind(console, 'connect failed!'));
db.on('open', () => {
console.log('db ok');
});
2.集合模块
const mongoose = require('mongoose');
let typeSchema = mongoose.Schema({
typeName: { type: String, required: true },
typeImg: { type: String, required: true }
});
let Type = mongoose.model('foodTypes', typeSchema);
module.exports = Type;
3.使用案例
const express = require("express");
const Food = require('./../db/Model/foodModel');
const Type = require('./../db/Model/foodTypeModel');
const router = express.Router();
const imgUrl = 'http://localhost:3000/public';
router.post('/getIndexFoodIcon', (req, res) => {
//http://localhost:3000/public/a.jpg
Type.find({})
.then((data) => {
for( var i=0; i < data.length; i++){
data[i].typeImg = imgUrl + data[i].typeImg;
}
res.send({ error: 0, msg: '成功获取菜品类型', data });
})
});
module.exports = router;