MongoDB相关操作

数据库操作语法

数据库操作

-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:{lte: 20}) db.users.find({age:{in: [20,30]})
db.musics.find({author:{all:['Ryuko','Lily']}}) // 同时满足两个条件 db.musics.find({name:{ne:"Love story"}})
db.col.find({title:/教/}) db.jobs.find{postName:{regex:/QQ/ig}} // 通过正则表达式进行模糊查询
db.getCollection('foods').find({}).skip(5).limit(5).sort({price: 1}) // 先递增排序,再跳过5条,再取5条
db.order.aggregate([{lookup: {from: "product", localField: "pid",foreignField: "_id",as: "inventory_docs" }},{lookup: {from: "user", localField: "uid",foreignField: "_id",as: "user_docs"}}]); // 通过$lookup多表查询,相当于左连接查询
localField:在输入文档中的查找字段
from:需要连接的集合
foreignField:需要在from集合中查找的字段
as:输出的字段名字

-更新update
db.table.updateMany({}, {inc:{"score": 1}}) # 在原基础上给所有score +1 db.table.update({"score": 65}, {set: {"score": 80}})
db.musics.updateMany({name: "Firefly"},{set:{author: "Peter"}}) db.table.update({}, {unset:{"age": 15}}) # 删除所有 age 字段
db.table.updateOne({"age":18}, {push: {"num": 1}}) b.table.updateOne({"age":18}, {pushAll: {"num": 2, 3, 4}}) //增加操作 (前提: 增加的字段 key: value 中 value 类型为 Array)
db.table.updateOne({"age":18}, {pull: {"num": 1}}) db.table.updateOne({"age":18}, {pullAll: {"num": 2, 3}}) // 指定删除Array中的某一个元素
db.stu.updateOne({name:"ran"},{pop: {"num": 1}}) # 删除最后一个元素 db.stu.updateOne({name:"ran"},{pop: {"num": -1}}) # 删除第一个元素
注意: 只要满足条件,就会将Array中所有满足条件的数据全部清除掉
db.table.updateOne({name:"ran", "num": 2},{set: {"num.":"燃"}})
db.table.updateOne({age:18,"c.name":"python"}, {inc:{"c..score": 10}})
db.table.updateOne({name:"ran"},{set: {"class.name": "python"}}) db.table.updateOne({name:"ran"},{unset: {"class.classtype": "python"}})
$关键字

  1. "$" 在 update 中加上关键字就是修改器
  2. 单独出现的 "" 字符为代指符 例: {"_id": 123, "name": "jack", "score": 100 "num: [1,2,3,5,9,2]} db.table.update({"score": 100, "num": 2}, {set: {"num.": 9}}) // 修改 num 中的 2 为 9 解释: 1."" 字符代表了符合条件元素的下标, 位置
    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;


dbRouter.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。