mongodb文档操作1

mongodb文档操作1

  • mongodb文档操作1
    • 插入操作
      • 1. 使用方法insert()分别插入以下文档到集合stu中。
      • 2. 使用方法insertMany()插入以下一组文档到集合stu中。
    • 删除文档操作
      • 1. 删除stu集合中name为Jasper的所有文档。
    • 更新文档操作
      • 1. 给stu集合中的所有文档都增加字段favorite,其值是一个数组[“football”, “basketball”]。
      • 2. 给stu集合中name为Kim的文档中,修改favorite字段的值为table tennis。
      • 3. 给stu集合中name为Jack的文档中,增加favorite字段的值为yoga。
      • 4. 给stu集合中name为Jack的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging。注意这里的favorite字段值看作是数据集,避免重复。
      • 5. 给stu集合中name为Kerry的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging,但favorite字段的取值只保留后4个元素。
      • 6. 给stu集合中name为Jack的文档中,将其favorite字段的数组值中,删除第一个元素football。
      • 7. 给stu集合中name为Peter的文档删除favorite字段。
      • 8. 给stu集合中所有文档增加字段score,其值为一个内嵌文档的数组[{"chinese":80},{"computer":79},{"programming":98}]。将name为Peter的语文分数直接修改为100。
      • 9. 给stu集合中name为Jack的文档中,计算机科目的分数加10。
      • 10. 给stu集合中,所有字段名称为name重命名为stu_name.
      • 11. 将stu集合中,名字为"Jack"和"Kim"的学生文档增加当前时间字段sdate。
      • 12.stu集合中,利用批量写操作完成更新操作
    • 完整脚本

mongodb文档操作1

插入操作

1. 使用方法insert()分别插入以下文档到集合stu中。

{“name”: “Kerry”, “score”:85}
{“name”: ”Peter”, “score”:90}
{“name”: “Kim”, “score”:70}

db.stu.insert({"name":"Kerry","score":85});
db.stu.insert({"name":"Peter","score":90});
db.stu.insert({"name":"Kim","score":70});

2. 使用方法insertMany()插入以下一组文档到集合stu中。

{“name”: “Jack”, “score”:90}
{“name”: “Jasper”, “score”: 87}

db.stu.insertMany([
	{"name":"Jack","score":90},
	{"name":"Jasper","score":87},
]);

删除文档操作

1. 删除stu集合中name为Jasper的所有文档。

db.stu.remove({"name":"Jasper"});

更新文档操作

1. 给stu集合中的所有文档都增加字段favorite,其值是一个数组[“football”, “basketball”]。

通过$set对字段进行设置

for(let i of db.stu.find().toArray()){
	db.stu.update(i,{$set:{"favorite":[
	"football","basketball"
	]}})
}

2. 给stu集合中name为Kim的文档中,修改favorite字段的值为table tennis。

db.stu.update({"name":"Kim"},{$set:{"favorite":"table tennis"}});

3. 给stu集合中name为Jack的文档中,增加favorite字段的值为yoga。

使用$push进行添加数组元素操作,无论原始数组是否有重复都会添加

db.stu.update({"name":"Jack"},{$push:{"favorite":"yoga"}},{upsert:true});

4. 给stu集合中name为Jack的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging。注意这里的favorite字段值看作是数据集,避免重复。

使用$addToSet保证更新数组方式监测原始数组中是否含有相同的元素,有则不更新,无则更新

for (let i of["yoga", "table tennis", "jogging"]) {
    db.stu.update({
        "name": "Kerry"
    }, {
        $addToSet: {
            "favorite": i
        }
    });
};

5. 给stu集合中name为Kerry的文档中,给其favorite字段一次性增加多个值,包括yoga,table tennis,jogging,但favorite字段的取值只保留后4个元素。

$push 表示要对 favorite 字段进行增加操作
{ $each: ["yoga", "table tennis", "jogging"], $slice: -4 } 表示要增加的多个值,其中$each表示一次性增加多个值,$slice 表示只保留最后的 4 个元素

db.stu.update({
    "name": "Kerry"
}, {
    $push: {
        "favorite": {
            $each: ["yoga", "table tennis", "jogging"],
            $slice:  -4
        }
    }
})

6. 给stu集合中name为Jack的文档中,将其favorite字段的数组值中,删除第一个元素football。

$pop 表示要对 favorite 字段进行删除操作,-1 表示删除数组的第一个元素

db.stu.update(
   { name: "Jack" },
   { $pop: { favorite: -1 } }
)

7. 给stu集合中name为Peter的文档删除favorite字段。

$unset 表示要删除指定的字段,favorite 表示要删除的字段名,“” 表示要删除的字段值(此处为空字符串)

db.stu.update(
   { name: "Peter" },
   { $unset: { favorite: "" } }
)

8. 给stu集合中所有文档增加字段score,其值为一个内嵌文档的数组[{“chinese”:80},{“computer”:79},{“programming”:98}]。将name为Peter的语文分数直接修改为100。

db.stu.updateMany(
    {},
    {
        $set: {
            score: [{
                "chinese": 80
            }, {
                "computer": 79
            }, {
                "programming": 98
            }]
        }
    }
)

db.stu.update(
    {
        name: "Peter"
    },
    {
        $set: {
            "score.0.chinese": 100
        }
    }
)

9. 给stu集合中name为Jack的文档中,计算机科目的分数加10。

如果 score 字段中的内嵌文档数组中不存在 computer 字段,则执行$inc 操作时会自动创建该字段并设置初始值为 0

db.stu.update(
    {
        "name": "Jack"
    },
    {
        $inc: {
            "score.1.computer": 10
        }
    }
)

10. 给stu集合中,所有字段名称为name重命名为stu_name.

使用 $rename 操作符,将 name 字段重命名为 stu_name

db.stu.updateMany(
    {},
    {
        $rename: {
            "name": "stu_name"
        }
    }
)

11. 将stu集合中,名字为"Jack"和"Kim"的学生文档增加当前时间字段sdate。

两种方式:

  1. $currentDate 操作符,将 sdate 字段的值设为当前时间,true 表示要更新该字段
  2. 使用new Date() 获取时间然后加入
var stime = new Date()

db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $set: {
            "sdate": stime
        }
    }
)

//-------------------------------------------------------------
db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $currentDate: {
            "sdate": true
        }
    }
)

12.stu集合中,利用批量写操作完成更新操作

包括插入3条文档记录,并更新2条文档记录。
插入文档信息:
{“_id”:10,“stu_name”:“张三”,“favorite”:[“badminton”,“swimming”]}
{“_id”:11,“stu_name”:“自己姓名”,“favorite”:[“piano”,“yoga”]}
{“_id”:12,“stu_name”:“张依”,“favorite”:{“swimming”:10,“jogging”:3}}
更新_id为10的文档记录,将喜欢的badminton运动改为yoga.
更新_id为12的文档记录,将jogging运动的喜欢程度从3变为9.

db.stu.bulkWrite([
    {
        insertOne: {
            document: {
                "_id": 10,
                "stu_name": "张三",
                "favorite": ["badminton", "swimming"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 11,
                "stu_name": "syf20020816@outlook.com",
                "favorite": ["piano", "yoga"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 12,
                "stu_name": "张依",
                "favorite": {
                    "swimming": 10,
                    "jogging": 3
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 10
            },
            update: {
                $set: {
                    "favorite.0": "yoga"
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 12
            },
            update: {
                $set: {
                    "favorite.jogging": 9
                }
            }
        }
    }
])

完整脚本

db.createCollection('stu');

db.stu.insert({
    "name": "Kerry",
    "score": 85
});
db.stu.insert({
    "name": "Peter",
    "score": 90
});
db.stu.insert({
    "name": "Kim",
    "score": 70
});

db.stu.insertMany([
    {
        "name": "Jack",
        "score": 90
    },
    {
        "name": "Jasper",
        "score": 87
    },
    
]);

db.stu.remove({
    "name": "Jasper"
});

for (let i of db.stu.find().toArray()) {
    db.stu.update(i, {
        $set: {
            "favorite": [
                "football",
                "basketball"
            ]
        }
    })
}

db.stu.find().toArray();

db.stu.update({
    "name": "Kim"
}, {
    $set: {
        "favorite": "table tennis"
    }
});

db.stu.update({
    "name": "Jack"
}, {
    $push: {
        "favorite": "yoga"
    }
}, {
    upsert: true
});

for (let i of["yoga", "table tennis", "jogging"]) {
    db.stu.update({
        "name": "Jack"
    }, {
        $addToSet: {
            "favorite": i
        }
    });
}



for (let i of["yoga", "table tennis", "jogging"]) {
    db.stu.update({
        "name": "Kerry"
    }, {
        $addToSet: {
            "favorite": i
        }
    });
};


db.stu.update({
    "name": "Kerry"
}, {
    $push: {
        "favorite": {
            $each: ["yoga", "table tennis", "jogging"],
            $slice: - 4
        }
    }
})

db.stu.update(
    {
        name: "Jack"
    },
    {
        $pop: {
            favorite: - 1
        }
    }
)

db.stu.update(
    {
        name: "Peter"
    },
    {
        $unset: {
            favorite: ""
        }
    }
)



db.stu.updateMany(
    {},
    {
        $set: {
            score: [{
                "chinese": 80
            }, {
                "computer": 79
            }, {
                "programming": 98
            }]
        }
    }
)

db.stu.update(
    {
        name: "Peter"
    },
    {
        $set: {
            "score.0.chinese": 100
        }
    }
)


db.stu.update(
    {
        "name": "Jack"
    },
    {
        $inc: {
            "score.1.computer": 10
        }
    }
)


db.stu.updateMany(
    {},
    {
        $rename: {
            "name": "stu_name"
        }
    }
)

var stime = new Date()

db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $set: {
            "sdate": stime
        }
    }
)


db.stu.updateMany(
    {
        "stu_name": {
            $in: ["Jack", "Kim"]
        }
    },
    {
        $currentDate: {
            "sdate": true
        }
    }
)

db.stu.bulkWrite([
    {
        insertOne: {
            document: {
                "_id": 10,
                "stu_name": "张三",
                "favorite": ["badminton", "swimming"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 11,
                "stu_name": "syf20020816@outlook.com",
                "favorite": ["piano", "yoga"]
            }
        }
    },
    {
        insertOne: {
            document: {
                "_id": 12,
                "stu_name": "张依",
                "favorite": {
                    "swimming": 10,
                    "jogging": 3
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 10
            },
            update: {
                $set: {
                    "favorite.0": "yoga"
                }
            }
        }
    },
    {
        updateOne: {
            filter: {
                "_id": 12
            },
            update: {
                $set: {
                    "favorite.jogging": 9
                }
            }
        }
    }
])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/1308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

长肥网络与TCP的长肥管道

本文目录1、简化的理解网络模型2、时延带宽积的定义3、长肥网络与TCP长肥管道的定义4、TCP长肥管道的特征及对TCP性能的影响4.1、TCP长肥管道的二大特征:4.2、TCP长肥管道对TCP性能的影响:5、TCP长肥管道中如何正确设置iperf3的参数从文章ip网络的时延&a…

漫画:什么是选择排序?

选择排序是一种简单直观的算法,今天我们聊聊选择排序的思想,代码以及复杂度 排序思想 一天,小一尘和师傅下山去了,在集市中路经一个水果摊,只见水果摊上摆着色泽基本相同但大小不一的苹果 师傅答应后,小一…

比df更好用的命令!

大家好,我是良许。 对于分析磁盘使用情况,有两个非常好用的命令:du 和 df 。简单来说,这两个命令的作用是这样的: du 命令:它是英文单词 disk usage 的简写,主要用于查看文件与目录占用多少磁…

一行代码“黑”掉任意网站

文章目录只需一行代码,轻轻一点就可以把任意网站变成暗黑模式。 首先我们先做一个实验,在任意网站中,打开浏览器开发者工具(F12),在 C1onsole 控制台输入如下代码并回车: document.documentElement.style.filterinve…

没有关系的话,那就去建立关系吧

今天给大家分享一道链表的好题--链表的深度拷贝,学会这道题,你的链表就可以达到优秀的水平了。力扣 先来理解一下题目意思,即建立一个新的单向链表,里面每个结点的值与对应的原链表相同,并且random指针也要指向新链表中…

【宝塔面板部署nodeJs项目】网易云nodeJs部署在云服务器上,保姆级教程,写网易云接口用自己的接口不受制于人

看了很多部署的,要么少步骤,要么就是写的太简洁,对新手不友好 文章目录前言一、下载网易云nodejs项目1. git clone下载,两种方式2. 运行项目二、使用步骤1. 先在本地运行2.测试接口三、部署服务器1. 在宝塔面板安装pm2管理器2. 压…

第一个 Qt 程序

第一个 Qt 程序 “hello world ”的起源要追溯到 1972 年,贝尔实验室著名研究员 Brian Kernighan 在撰写 “B 语言教程与指导(Tutorial Introduction to the Language B)”时初次使用(程序),这是目前已 知最早的在计算机著作中将…

【linux】多线程概念详述

文章目录一、线程基本概念1.1 进程地址空间与页表1.2 页表结构1.3 线程的理解1.3.1 如何描述线程1.4 再谈进程1.5 代码理解1.5.1 原生库提供线程pthread_create1.6 资源共享问题1.7 资源私有问题二、总结2.1 什么是线程2.2 并行与并发2.3 线程的优点2.4 线程的缺点2.5 线程异常…

OpenCV实战——拟合直线

OpenCV实战——拟合直线0. 前言1. 直线拟合2. 完整代码相关链接0. 前言 在某些计算机视觉应用中,不仅要检测图像中的线条,还要准确估计线条的位置和方向。本节将介绍如何找到最适合给定点集的线。 1. 直线拟合 首先要做的是识别图像中可能沿直线对齐的…

7个最受欢迎的Python库,大大提高开发效率

当第三方库可以帮我们完成需求时,就不要重复造轮子了 整理了GitHub上7个最受好评的Python库,将在你的开发之旅中提供帮助 PySnooper 很多时候时间都花在了Debug上,大多数人呢会在出错位置的附近使用print,打印某些变量的值 这个…

设计模式之单例模式~

设计模式包含很多,但与面试相关的设计模式是单例模式,单例模式的写法有好几种,我们主要学习这三种—饿汉式单例,懒汉式单例、登记式单例,这篇文章我们主要学习饿汉式单例 单例模式: 满足要点: 私有构造 …

同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1)

同一片天空共眠,同一个梦想奋斗《大抠车始歌》(1) English version:Sleeping under the same sky, chasing the same dream - "The Beginning Song of Dakouche" (1) 飞链云 《Sleeping under the same sky, chasing …

Nacos 注册中心 - 健康检查机制源码

目录 1. 健康检查介绍 2. 客户端健康检查 2.1 临时实例的健康检查 2.2 永久实例的健康检查 3. 服务端健康检查 3.1 临时实例的健康检查 3.2 永久实例服务端健康检查 1. 健康检查介绍 当一个服务实例注册到 Nacos 中后,其他服务就可以从 Nacos 中查询出该服务…

jupyter的安装和使用

目录 ❤ Jupyter Notebook是什么? notebook jupyter 简介 notebook jupyter 组成 网页应用 文档 主要特点 ❤ jupyter notebook的安装 notebook jupyter 安装有两种途径 1.通过Anaconda进行安装 2.通过pip进行安装 启动jupyter notebook ❤ jupyter …

10 个超赞的 C 语言开源项目

今天给大家分享10个超赞的C语言开源项目,希望这些内容能对大家有所帮助!01.WebbenchWebbench是一个在 Linux 下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能。最多可以模拟 3…

【深度强化学习】(8) iPPO 模型解析,附Pytorch完整代码

大家好,今天和各位分享一下多智能体深度强化学习算法 ippo,并基于 gym 环境完成一个小案例。完整代码可以从我的 GitHub 中获得:https://github.com/LiSir-HIT/Reinforcement-Learning/tree/main/Model 1. 算法原理 多智能体的情形相比于单智…

《C++ Primer Plus》(第6版)第12章编程练习

《C Primer Plus》(第6版)第12章编程练习《C Primer Plus》(第6版)第12章编程练习1. Cow类2. String类3. Stock类4. Stack类5. 排队时间不超过1分钟6. 再开设一台ATM,重新求解第五题《C Primer Plus》(第6版…

JAVA 多线程

目录 P1多线程01:概述 P2多线程02:线程、进程、多线程 P3多线程03:继承Thread类 P4多线程04:网图下载 P5多线程05:实现Runnable接口 P6多线程06:初识并发问题 P7多线程07:龟兔赛跑 P8多…

PyTorch深度学习实战 | 搭建卷积神经网络进行图像分类与图像风格迁移

PyTorch是当前主流深度学习框架之一,其设计追求最少的封装、最直观的设计,其简洁优美的特性使得PyTorch代码更易理解,对新手非常友好。本文为实战篇,介绍搭建卷积神经网络进行图像分类与图像风格迁移。1、实验数据准备本文中准备使…

汇编语言与微机原理(1)基础知识

前言(1)本人使用的是王爽老师的汇编语言第四版和学校发的微机原理教材配合学习。(2)推荐视频教程通俗易懂的汇编语言(王爽老师的书);贺老师C站账号网址;(3)文…
最新文章