200行代码快速入门文档型数据库MonogoDB

200行代码快速入门文档型数据库MonogoDB

前言

环境:
1.MongoDB V3.24
2.NoSQL Manager for MongoDB(图形化界面)

一、基本命令

1.显示所有数据库

//显示所有数据库
show databases;
show dbs;

在这里插入图片描述

2.创建并使用数据库

//创建并使用数据库
use lan;

在这里插入图片描述

3.显示当前使用的数据库的所有集合

//显示当前使用的数据库的所有集合
show collections;

在这里插入图片描述

4.显示当前使用的数据库名称

//显示当前使用的数据库名称
db

在这里插入图片描述

二、文档CRUD

1.增

//增
db.collection.insert({:}) 增加一个文档
db.collection.insert([{},{}...]) 增加多个文档
db.collection.insertOne({:}) 只能增加一个文档
db.collection.insertMany([{},{}...]) 只能增加多个文档

示例:

db.test.insert({name:"jack",age:18});
db.test.insert([ {name:"lucy",age:16}, {name:"merry",age:17} ]);
db.test.insertOne({name:"tom",age:18});
db.test.insertMany([ {name:"jerry",age:17}, {name:"mike",age:19} ]);

2.查

//查
db.collection.find() 或 db.collection.find({}) 查询所有
db.collection.find(<query>) 条件查询
db.collection.find(<query>)[index] 查询指定索引(默认按照_id顺序升序排序)
db.collection.findOne(<query>) 查询满足条件的第一个文档

示例:

db.test.find({});
db.test.find();

在这里插入图片描述

db.test.find({name:"lucy"});

在这里插入图片描述

db.test.find()[2];

在这里插入图片描述

db.test.findOne();

在这里插入图片描述

3.改

//改

db.collection.update({query},{update}) 修改符合查询条件的文档的值。注意:后面的替换属性会完全覆盖前面的属性
db.collection.update( {query}, {$set: {:...} } ) 修改符合查询条件的文档(只能修改第一个)
db.collection.update( {query}, {$set: {:...}, {multi: true} } ) 修改符合查询条件的的所有文档(multi默认为false,需手动修改)
db.collection.updateOne( {query}, {$set: {:...} } ) 修改符合查询条件的文档(等同于multi为false的update)
db.collection.updateMany( {query}, {$set: {:...} } ) 修改符合条件的所有文档(等同于multi为true的update)
db.collection.update( {query}, {$unset: {:...} } ) 删除符合查询条件的属性
db.collection.replaceOne(<query>,<replacement>) 等同于update(<query>,<update>)
db.collection.update( {query}, {$inc: {key:num}  }  ) 向文档的数字型键追加值进行数字运算 正数代表增加值,负数代表减少值
db.collection.update( {query}, {$push: {key:value} } ) 向文档的数组型键追加值。

示例:

db.test.update({name:"lucy"},{age:18});

db.test.update(
    {"_id" : ObjectId("5eb3745e466ed91adbd93155")},
    {$set: {name: "lucy"} }
);

db.test.update(
    {age: 18},
    {$set: {address: "beijing" } }
);

db.test.update(
    {age: 18},
    {$set: {address: "beijing"} },
    {multi:true}
);

db.test.updateOne(
    {age: 19},
    {$set: {phone: 110} }
);

db.test.updateMany(
    {age: 17},
    {$set: {hobby: "game" } }
);

db.test.update(
    {age: 17},
    {$unset: {hobby: ""} }
);

db.test.updateMany(
    {age: 17},
    {$unset: {hobby: ""}}
);

db.test.update(
    {name: "merry"},
    {$inc: {age: -1} }
);

db.test.replaceOne({name: "lucy"},{name: "lucys"});

-------
db.arr.insert([
    {type:"color1", color: ["red", "green", "blue"] }
]);

db.arr.update(
    {type: "color1" },
    {$push: {color: "yellow" } }
);

db.arr.find();

-------

db.test.find();

4.删

//删
db.collection.remove({}) 删除所有
db.collection.remove(<query>,<justone>) 删除符合条件的的文档,Justone为false表示删除多个,为true表示删除一个,默认为false
db.collection.remove
db.collection.deleteOne(<query>) 删除一个符合条件的文档
db.collection.deleteMany(<query>) 删除所有符合条件的文档
db.collection.drop() 删除集合
db.dropDatabase() 删除数据库(谨慎使用)

示例:

db.test.remove({name:"jerry"});
db.test.remove({age: 18},true);
db.test.deleteOne({age: 17});
db.test.deleteMany({age: 18});
db.test.remove({});
db.test.drop();
show collections;

三、批量创建文档

//向集合中插入10000条文档
var arr = [];
for(var i = 1; i <= 10000; i++){
    arr.push({num:i});
}

db.numbers.insert(arr);
db.numbers.find().count();

在这里插入图片描述

四、常用函数

1.limit和skip

//limit(num) 查询num个文档,默认起始位置为索引第一个
//skip(num) 跳过前面num个文档,和limit()的位置可以互换
db.numbers.find().limit(100);
db.numbers.find().skip(100).limit(100);

在这里插入图片描述

在这里插入图片描述

2.条件操作符

$gt 大于 $gte 大于等于 $lt 小于 $lte 小于等于
db.collection.find({key: {$gt:num} })
db.collection.find({key: {$gt:num}, {$lt:num} ... }) 与
db.collection.find({$or: [ {key: {$gte:num}}, {key: {$lte:num}} ] })
db.emp.find();
db.emp.find({salary: {$gte:8000} });
db.emp.find({salary: {$lt: 8000} });
db.emp.find({$or: [ {salary: {$gte:8000}}, {salary: {$lte:9000}} ] });

3.排序函数

//sort()排序函数
sort({key:1/-1}) 第二个参数为1表示生序排序,-1表示降序排序
sort({key1:1/-1},{key2:1/-1}) 多重条件排序
//按照薪资升序排序
db.emp.find().sort({salary:1});
//按照薪资升序排序,再按照年龄降序排序
db.emp.find().sort({salary:1},{age:-1});
//db.collection.find().skip().limit().sort(); 复杂查询 其中skip limit sort之间的位置可以相互互换
db.emp.find().skip(1).limit(4).sort({salary:1},{age:-1});

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、多表关系

1.一对一

//一对一的关系:使用内嵌文档的形式

use rs;

db.rs.insert([
    {name:"郭靖",wife:{name:"黄蓉"}},
    {name:"张无忌",wife:{name:"赵敏"}}   
]);

db.rs.find();

在这里插入图片描述

2.多对一

//多对一的关系

db.users.insert([{user:"jack"},{user:"tom"}]);

db.users.find();

db.roles.insert({list:["admin","user","guest"],
    user_id:ObjectId("5eb263e2c0935786ed43699d")});
 
var id = db.users.findOne({user:"jack"})._id;

id;

db.roles.find({user_id:id});

在这里插入图片描述

3.多对多

//多对多的关系(many to many)
db.customer.insert([
    {name:"jack",gift:["car","house"]},
    {name:"mike",gift:["car"]},
    {name:"lucy",girt:["car","cake"]}
]);

db.orders.insert([
    {gift:"car",who:["jack","mike","lucy"]},
    {gift:"house",who:["jack","lucy"]},
    {gift:"cake",who:"lucy"}
]);

db.customer.find();
db.orders.find();

在这里插入图片描述

结语

在这里插入图片描述

水平有限,仅供参考,若有纰漏,希望随时指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热爱旅行的小李同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值