mongodb基本操作命令

news2024/11/20 18:37:13

mongodb快速搭建及使用

  • 1.mongodb安装
    • 1.1 docker安装启动mongodb
  • 2.mongo shell常用命令
    • 2.1 插入文档
      • 2.1.1 插入单个文档
      • 2.1.2 插入多个文档
      • 2.1.3 用脚本批量插入
    • 2.2 查询文档

前言:本篇默认你是对nongodb的基础概念有了了解,操作是非常基础的。但是与关系型数据库的类比默认你已经是了解的。

1.mongodb安装

这里为了快速使用mongodb,我使用了docker安装(如果想了解linux上面的安装可以参考我的另一篇文章《mongdb下载、安装、启动》)。

1.1 docker安装启动mongodb

#拉取mongo镜像
docker pull mongo:4.4.10
#运行mongo镜像
docker run --name mongo-server -p 29017:27017 \
-e MONGO_INITDB_ROOT_USERNAME=root\
-e MONGO_INITDB_ROOT_PASSWORD=root\
-d mongo:4.4.10 --wiredTigerCacheSizeGB 1

默认情况下,Mongo会将wiredTigerCacheSizeGB设置为与主机总内存成比例的值,而不考虑你可能对容器施加的内存限制。
MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD都存在就会启用身份认证(mongod --auth)

#进入容器
docker exec -it mongo-server  bash
#进入Mongo shell
mongo -u root-p root

2.mongo shell常用命令

命令说明
show dbs/show databases显示数据库列表
use 数据库名切换数据库,如果不存在创建数据库
db.dropDatabase()删除数据库
show collections/show tables显示当前数据库的集合列表
db.createCollection(“集合名”)创建集合
db.集合名.stats()查看集合详情
db.集合名.drop()删除集合
show users显示当前数据库的用户列表
show roles显示当前数据库的角色列表
db.createUser({user:“用户名”,pwd:“用户密码”,roles:[“角色”]})创建管理员
db.dropUser(“用户名”)删除用户
show profile显示近发生的操作
load(“xxx.js”)执行一个JavaScript脚本文件
exit /quit()退出当前shell
help查看mongodb支持哪些命令
db.help()查询当前数据库支持的方法
db.集合名.help()显示集合的帮助信息
db.version()查看数据库版本

2.1 插入文档

2.1.1 插入单个文档

  • insertOne: 支持writeConcern
db.collection.insertOne(
   <document>,
   {
      writeConcern: val
   }
)

writeConcern 决定一个写操作落到多少个节点上才算成功。writeConcern 的取值val包括:
0: 发起写操作,不关心是否成功;
1: 集群最大数据节点数:写操作需要被复制到指定节点数才算成功;
majority: 写操作需要被复制到大多数节点上才算成功

db.emps.insertOne({x:22,y:12},{writeConcern:0})

在这里插入图片描述

  • insert: 若插入的数据主键已经存在,则会抛 DuplicateKeyException 异常,提示主键重复,不保存当前数据
db.emps.insert({x:11,y:22})

在这里插入图片描述

  • save: 如果 _id 主键存在则更新数据,如果不存在就插入数据
db.emps.save({_id:ObjectId("65674b35fc0731432f162147"),x:12,y:21})

在这里插入图片描述

2.1.2 插入多个文档

  • insertMany:向指定集合中插入多条文档数据
db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>      
   }
)

writeConcern:写入策略,默认为 1,即要求确认写操作,0 是不要求。
ordered:指定是否按顺序写入,默认 true,按顺序写入。

db.emps.insertMany([{x:23,y:23},{x:33,y:33}],{writeConcern:0,ordered:true})

在这里插入图片描述

2.1.3 用脚本批量插入

# 退出mongo shell
exit
# docker容器内部也是一个小型的linux环境
# 更新依赖
apt-get update  
# 安装vim命令
apt-get install vim


cd /data/db/
vim books.js
# 以下内容粘贴在books.js中
var tags = ["nosql","mongodb","document","developer","popular"];
var types = ["technology","sociality","travel","novel","literature"];
var books=[];
for(var i=0;i<50;i++){
    var typeIdx = Math.floor(Math.random()*types.length);
    var tagIdx = Math.floor(Math.random()*tags.length);
    var favCount = Math.floor(Math.random()*100);
    var book = {
        title: "book-"+i,
        type: types[typeIdx],
        tag: tags[tagIdx],
        favCount: favCount,
        author: "xxx"+i
    };
    books.push(book)
}
db.books.insertMany(books);
# 进入mongo shell
mongo -u root -p root
# 加载js文件
load("books.js")

在这里插入图片描述

2.2 查询文档

db.collection.find(query, projection)

query :可选,查询的条件
projection :可选,使用投影操作符指定返回的键。默认省略:查询时返回文档中所有键值。_id为1的时候,其他字段必须是1;_id是0的时候,其他字段可以是0;如果没有_id字段约束,多个其他字段必须同为0或同为1。

# 只指定查询条件 tag=nosql
db.books.find({tag:"nosql"})
# 指定查询条件 且 指定title,author不展示
db.books.find({tag:"nosql"},{title:0,author:0})
# 指定查询条件 且 只展示title,author
db.books.find({tag:"nosql"},{title:1,author:1})

在这里插入图片描述

# 指定查询条件 且 只展示title,author,隐藏_id
db.books.find({tag:"mongodb"},{type:1,author:1,_id:0})
# 同时指定0和1仍然会报错
db.books.find({tag:"mongodb"},{type:0,author:1,_id:0})
# 指定查询条件 且 指定title,author不展示,隐藏_id
db.books.find({tag:"mongodb"},{type:0,author:0,_id:0})
# 指定查询条件 且 指定title,author不展示,不隐藏_id
db.books.find({tag:"mongodb"},{type:0,author:0,_id:1})

在这里插入图片描述
查询条件对照表

SQLMQL
a=1{a:1}
a<>1{a:{$ne:1}}
a>1{a:{$gt:1}}
a>=1{a:{$gte:1}}
a<1{a:{$lt:1}}
a<=1{a:{$lte:1}}

查询逻辑对照表

SQLMQL
a=1and b=1{a:1,b:1}或{$and:[{a:1},{b:1}]}
a=1or b=1{$or:[{a:1},{b:1}]}
a is null{a: {$exists: false}}
a in (1, 2, 3){a:{$gte:1}}
a<1{a:{$in:[1,2,3]}}
# 查询条件 type=travel 且 favCount > 40
db.books.find({type:"travel",favCount:{$gt:40}})
# 查询条件 type=travel 且 favCount > 40
db.books.find({$and:[{type:"travel"},{favCount:{$gt:40}}]})
# 查询条件 type=travel 或者 favCount > 40
db.books.find({$or:[{type:"travel"},{favCount:{$gt:40}}]})

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Opencv手势控制音量!附源码!

效果演示&#xff1a; 废话不多说&#xff01;直接上源码&#xff01;下面写有所有代码注释&#xff01;&#xff01; import cv2 import mediapipe as mp #它包含了各种预训练的机器学习模型&#xff0c;可以用于姿势估计、手势识别等任务 from ctypes import cast, POINTE…

P8649 [蓝桥杯 2017 省 B] k 倍区间(前缀和+优化(桶分类))

分析&#xff1a; &#xff08;1&#xff09;任意连续子序列可用两个前缀和的差来表示 &#xff08;2&#xff09;判断该子序列是否为k的倍数 p1-p2 模 0 (mod k) 等价于&#xff1a;前缀和模 k 是否同余 &#xff08;3&#xff09;同余的任意两前缀和组合的序列均满足…

[React] 2023年最新面试题

[React] 2023年最新面试题 1. class 组件与函数组件的区别2. react 18 新特性有那些?新增 createRoot API自动批处理过渡更新新的Hook 3. redux 和 react-redux 的区别4. redux 中间件的原理5. setState 发生了什么 &#xff0c;render 函数做了什么6. 虚拟DOM&#xff0c; Fi…

【面试】typescript

目录 为什么用TypeScript&#xff1f; TS和JS的区别 控制类成员可见性的访问关键字&#xff1f; public protected&#xff09;&#xff0c;该类及其子类都可以访问它们。 但是该类的实例无法访问。 私有&#xff08;private&#xff09;&#xff0c;只有类的成员可以访问…

JSON.stringify方法详解 后端接受JSON数据格式

1、方法定义&#xff1a;JSON.stringify(value, replacer, space) 参数说明&#xff1a; value&#xff1a;js对象 replacer&#xff1a;替换对象&#xff0c;可以是一个方法、对象或数组&#xff0c;将value按照替换规则展示。 space&#xff1a;填充参数&#xff0c;可以是数…

LVS+Keepalived实验

实验前准备 主DR服务器&#xff1a;(ens33)192.168.188.11 ipvsadm、keepalived (ens33:0)192.168.188.188 备DR服务器&#xff1a;(ens33)192.168.188.12 ipvsadm、keepalived (ens33:0)192.168.188.188 Wbe服务器1&#xff1a;(ens33)192.168.188.13 (lo:0)192.168.188.188 W…

selenium使用记录

本文记录python环境下使用selenium的一些步骤 Step1&#xff1a;安装并配置驱动 pip install selenium # 使用pip在对应python中安装selenium包为了让selenium能调用指定的浏览器&#xff0c;需要下载对应浏览器的驱动程序&#xff08;这里以edge为例子&#xff09; #Firefo…

【Openstack Train安装】四、MariaDB/RabbitMQ 安装

本章介绍了MariaDB/RabbitMQ的安装步骤&#xff0c;MariaDB/RabbitMQ仅需要在控制节点安装。 在安装MariaDB/RabbitMQ前&#xff0c;请确保您按照以下教程进行了相关配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Opensta…

改善厦门城市内涝积水问题,实时监测城市易涝积水点

近年来&#xff0c;城市内涝积水问题已成为中国许多城市面临的严峻挑战。特别是在厦门这样的海滨城市&#xff0c;由于其特殊的地理环境和气候条件&#xff0c;内涝问题尤为突出。传统的解决方法主要依赖于人工排查&#xff0c;然而&#xff0c;这种方式存在许多缺陷。 WITBEE万…

BEVFormer【人工智能】

BEVFormer 是一篇今年中稿 ECCV 2022 的论文&#xff0c;其中提出了一种纯视觉&#xff08;camera&#xff09;感知任务的算法模型&#xff0c;用于实现3D目标检测和地图分割任务。该算法通过提取环视相机&#xff08;Bird’s Eye View Camera&#xff09;采集到的图像特征&…

【产品设计】SaaS产品数据分析之指标与标签

数据分析能够应用到各个领域和岗位&#xff0c;那么在SaaS产品中的应用会是如何&#xff1f;本文将探索SaaS产品在数据分析中的应用&#xff0c;并对其指标与标签的设计进行总结分析&#xff0c;一起来看看吧。 数据分析是业务开展过程中&#xff0c;收集记录各种行为产生的数据…

vue2+element-ui npm run build打包后,在服务器打开报错

报错 页面的图标也显示不出来&#xff0c;如下 解决&#xff1a; 在build->utils.js文件里面加上publicPath: ../../&#xff0c;再打包发布一下就可以了 // Extract CSS when that option is specified// (which is the case during production build)if (options.extrac…

数据挖掘之时间序列分析

一、 概念 时间序列&#xff08;Time Series&#xff09; 时间序列是指同一统计指标的数值按其发生的时间先后顺序排列而成的数列&#xff08;是均匀时间间隔上的观测值序列&#xff09;。 时间序列分析的主要目的是根据已有的历史数据对未来进行预测。 时间序列分析主要包…

re:Invent 构建未来:云计算生成式 AI 诞生科技新局面

文章目录 前言什么是云计算云计算类型亚马逊云科技云计算最多的功能最大的客户和合作伙伴社区最安全最快的创新速度最成熟的运营专业能力 什么是生成式 AI如何使用生成式 AI后记 前言 在科技发展的滚滚浪潮中&#xff0c;我们见证了云计算的崛起和生成式 AI 的突破&#xff0c…

客服管理者如何有效管理客服团队,有哪些高效方式?

在如今的市场竞争中&#xff0c;客户服务是企业成功的关键因素之一。因此&#xff0c;客服团队的有效管理至关重要。客服管理者需要了解如何有效地管理客服团队&#xff0c;以确保客户的满意度和忠诚度&#xff0c;从而提高企业的竞争力。 以下是客服管理者如何有效管理客服团队…

【AI】Segment-Anything本地部署

Segment-Anything是Meta开源的图像分割模型&#xff0c;顾名思义&#xff0c;可以分割所有东西&#xff0c;感觉这东西可以用于遥感影像分割&#xff0c;于是找来源码测试一下。 项目地址&#xff1a;https://github.com/facebookresearch/segment-anything 1. 构建环境 首先…

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案&#xff0c;该方案模糊了所有UTXO的金额&#xff0c;同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”&#xff0c;一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…

VSCode编译多个文件

打开tasks.json文件&#xff0c;找到"$ {file}“这一行。然后在其后面添加你想要编译的文件即可。 比如我这里是想要编译当前文件夹下的所有.cpp文件&#xff0c;那么我就直接把”$ {file}"给注释掉了&#xff0c;然后再使用通配符来代表所有.cpp文件。 最后解释以下…

支持向量机,硬间隔,软间隔,核技巧,超参数设置,分类与回归

SVM&#xff08;Support Vector Machine&#xff0c;支持向量机&#xff09;是一种非常常用并且有效的监督学习算法&#xff0c;在许多领域都有广泛应用。它可以用于二分类问题和多分类问题&#xff0c;并且在处理高维数据和特征选择方面非常强大。SVM算法的核心思想是通过找到…

vue3项目安装vite-plugin-mock 项目报错

vue3vite项目安装了vite-plugin-mock之后&#xff0c;根据官网配置使用&#xff0c;vscode会出现波浪线&#xff0c;启动项目&#xff0c;发现运行不了 解决办法&#xff1a; 安装vite-plugin-mock2.9.6的版本即可 pnpm install mockjs vite-plugin-mock2.9.6 -D