当前位置:网站首页>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();

结语

水平有限,仅供参考,若有纰漏,希望随时指出!
边栏推荐
- How to generate random numbers with standard distribution or Gaussian distribution
- win10小技巧(1)——转移桌面位置
- Unity learning notes (realize the conveyor belt)
- log4j. Properties log details
- Leetcode brushes questions the next day
- MySQL学习笔记(2)——存储过程与存储函数
- CMD command
- MySQL 03 高级查询(一)
- 电磁场学习笔记-矢量分析和场论基础
- 微机原理学习笔记-通用整数指令及应用
猜你喜欢

MongoDB

专项测试之「 性能测试」总结

2022备战秋招10W字面试小抄pdf版,附操作系统、计算机网络面试题

Led learning eye protection table lamp touch chip-dlt8t10s-jericho

【微信小程序】项目实战—抽签应用

Docker - docker installation, MySQL installation on docker, and project deployment on docker

How to break the team with automated testing

Extension of regular expression

MySQL 04 高级查询(二)

如何用自动化测试搞垮团队
随机推荐
Unity display Kinect depth data
ES6-新增方法
Unity学习笔记——物体移动六种常见函数
NPM basic use
NPM's ID card and dependence
`this.$emit` 子组件给父组件传递多个参数
ES6学习笔记(1)——快速入门
Collection of software design suggestions of "high cohesion and low coupling"
一篇让你掌握线程和线程池,还解决了线程安全问题,确定不看看?
ES6数值的扩展
Power control
Useful resources for ns2
MySQL 05 stored procedure
NPM, cnpm Taobao image
Unity-显示Kinect深度数据
express
汇编语言入门基础(1)
MySQL 04 高级查询(二)
Micaz+tinyos learning notes (1)
normal distribution, lognormal distribution,正态随机数的生成