当前位置:网站首页>200行代码快速入门文档型数据库MonogoDB

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

2022-07-27 16:25:00 热爱旅行的小李同学

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();

在这里插入图片描述

结语

在这里插入图片描述

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

原网站

版权声明
本文为[热爱旅行的小李同学]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_46275020/article/details/105971990