mongodb不等于某个值_MongoDB的安装以及基本增删改查命令

MongoDB 介绍

80de55a6ae46960d7b8d0dbaf8c0737e.png

mongodb 和大多数NoSQL 数据库(redis,memcached 等)一样,都是以 kv数据库(key/value) 存储数据

不同的是mongodb 文档数据库,存储的是文档(Bson->json的二进制化).

特点:内部执行引擎为JS解释器, 把文档存储成bson结构,在查询时,转换为JS对象,并可以通过熟悉的js语法来操作.

mongo和传统型数据库相比,最大的不同:传统型数据库: 结构化数据, 定好了表结构后,每一行的内容,必是符合表结构的,就是说--列的个数,类型都一样.mongo文档型数据库: 表下的每篇文档,都可以有自己独特的结构(json对象都可以有自己独特的属性和值)

问题: 如果有电影, 影评, 影评的回复, 回复的打分在传统型数据库中, 至少要4张表, 关联度非常复杂.在文档数据库中,通过1篇文档,即可完成. 体现出文档型数据库的反范式化

{fiim: ’天龙八部’comment: [{content: ’王家卫的电影风格’,reply: [‘支持’, ’好’]}]}

mongodb的安装

1: 下载mongodb www.mongodb.org 下载最新的stable版

2: 解压文件

3: 不用编译,本身就是编译后的二进制可执行文件

60f1e6898337f07bbf472f7fd7ff9868.png

4: 启动mongod服务

./bin/mongod --dbpath /path/to/database --logpath /path/to/log --fork --port 27017

参数解释:

--dbpath 数据存储目录

--logpath 日志存储目录

--port 运行端口(默认27017)

--fork 后台进程运行

5: mongodb非常的占磁盘空间, 刚启动后要占3-4G左右,

如果你用虚拟机练习,可能空间不够,导致无法启动.

可以用 --smallfiles 选项来启动,

将会占用较小空间 400M左右.

mongo入门命令

1.1: show dbs 查看当前的数据库

1.2 use databaseName 选库

1.2 show tables/collections 查看当前库下的collection

1.3 如何创建库?

Mongodb的库是隐式创建,你可以use 一个不存在的库

然后在该库下创建collection,即可创建库

1.4 db.createCollection(‘collectionName’) 创建collection

1.5 collection允许隐式创建 Db.collectionName.insert(document);

1.6 db.collectionName.drop() ,删除collection

1.7 db.dropDatabase(); 删除database

基本操作增删改查

增: insert

介绍: mongodb存储的是文档,. 文档是json格式的对象.

语法: db.collectionName.isnert(document);

1: 增加单篇文档

Db.collectionName.insert({title:’nice day’});

2: 增加单个文档,并指定_id

Db.collectionName.insert({_id:8,age:78,name:’lisi’});增加多个文档db.collectionName.insert([{time:'friday',study:'mongodb'},{_id:9,gender:'male',name:'QQ'}])

删:remove

语法: db.collection.remove(查询表达式, 选项);

选项是指 {justOne:true/false},是否只删一行, 默认为false

注意

1: 查询表达式依然是个json对象

2: 查询表达式匹配的行,将被删掉

3: 如果不写查询表达式,collections中的所有文档将被删掉.

例1:

db.stu.remove({sn:’001’});删除stu表中 sn属性值为’001’的文档

例2:

db.stu.remove({gender:’m’,true});删除stu表中gender属性为m的文档,只删除1行

改 update操作

改谁? --- 查询表达式改成什么样?

 -- 新值 或 赋值表达式操作选项 ----- 可选参数

语法:

db.collection.update(查询表达式,新值,选项);

例:

db.news.update({name:'QQ'},{name:'MSN'});是指选中news表中,name值为QQ的文档,并把其文档值改为{name:’MSN’},

结果: 文档中的其他列也不见了,改后只有_id和name列了.即--新文档直接替换了旧文档,而不是修改

如果是想修改文档的某列,可以用$set关键字

db.collectionName.update(query,{$set:{name:’QQ’}})

修改时的赋值表达式$set 修改某列的值$unset 删除某个列$rename 重命名某个列$inc 增长某个列$setOnInsert 当upsert为true时,并且发生了insert操作时,可以补充的字段.

Option的作用:

{upsert:true/false,multi:true/false}Upsert---是指没有匹配的行,则直接插入该行.(和mysql中的replace一样)

例:

db.stu.update({name:'wuyong'},{$set:{name:'junshiwuyong'}},{upsert:true});

如果有name=’wuyong’的文档,将被修改如果没有,将添加此新文档

例:

db.news.update({_id:99},{x:123,y:234},{upsert:true});

没有_id=99的文档被修改,因此直接插入该文档

multi: 是指修改多行(即使查询表达式命中多行,默认也只改1行,如果想改多行,可以用此选项)例:

db.news.update({age:21},{$set:{age:22}},{multi:true});则把news中所有age=21的文档,都修改

查: find, findOne

语法: db.collection.find(查询表达式,查询的列);Db.collections.find(表达式,{列1:1,列2:1});

例1:db.stu.find()查询所有文档 所有内容

例2: db.stu.find({},{gendre:1})查询所有文档,的gender属性 (_id属性默认总是查出来)

例3: db.stu.find({},{gender:1, _id:0})查询所有文档的gender属性,且不查询_id属性

例3: db.stu.find({gender:’male’},{name:1,_id:0});查询所有gender属性值为male的文档中的name属性

查询表达式:

1: 最简单的查询表达式{filed:value} ,是指查询field列的值为value的文档

2: $ne --- != 查询表达式{field:{$nq:value}}作用--查filed列的值 不等于 value 的文档

3: $nin --> not in

4: $all语法: {field:{$all:[v1,v2..]}}是指取出 field列是一个数组,且至少包含 v1,v2值

5: $exists语法: {field:{$exists:1}}作用: 查询出含有field字段的文档

6: $nor,{$nor,[条件1,条件2]}是指 所有条件都不满足的文档为真返回

7:用正则表达式查询 以”诺基亚”开头的商品例:db.goods.find({goodsname:/诺基亚.*/},{goodsname:1});

8: 用$where表达式来查询例: db.goods.find({$where:'this.catid != 3 && this.catid != 11'});

注意: 用$where查询时, mongodb是把bson结构的二进制数据转换为json结构的对象,然后比较对象的属性是否满足表达式.

速度较慢

Update时可用的操作符例:->db.user.insert({name:'lisi',age:12,sex:'male',height:123,area:'haidian'});->db.user.update({name:'lisi'},{$set:{area:'chaoyang'},$unset:{height:1},$inc:{age:1},$rename:{sex:'gender'}});

db.user.find();

{ "_id" : ObjectId("51fc01c4f5de93e1f2856e33"), "age" : 13, "area" : "chaoyang

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

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

相关文章

python创建nc文件_如何python写nc文件

今天试了一下用PyNIO写nc文件,难用的一腿算了,还是用netcdf模块写了。代码如下:# -*- coding: utf-8 -*-import numpy as npimport sysimport osfrom netCDF4 import Datasetdef creatspinc(value, filename):gridspi Dataset(filename, w, …

显示器接服务器后黑屏,笔记本外接显示器黑屏怎么修复_笔记本外接显示器后黑屏的处理方法...

笔记本外接显示器能够将笔记本屏幕上的内容投影到更大的显示器上,使用起来更加舒服。不过有的小伙伴在操作时,却碰到了笔记本外接显示器黑屏的问题,对此我们该怎么来修复呢?下面系统城小编就来为大家分享关于笔记本外接显示器后黑…

绿联怎么样_移动电源降价了,小米、京选、绿联充电宝怎么选,网友:都非常合适...

我是一个手机“电量恐惧症”患者,如果出门,只要手机电量不足60%就感到恐惧担心,如果在不可预知时间的外出时,移动电源成了我出门必备。市面上5000、10000、20000mAh产品琳琅满目,经过挑选,我锁定了10000mAh…

wlandns服务器未响应,新东方在线APP客户端常见问题及解决办法

苹果设备常见问题:1、苹果设备下载APP后,调整了音量,但仍无声音?静音状态下,课件播放就会无声音,同学可调整一下手机的侧拨键,一般可恢复正常。2、苹果设备全屏播放时不能180度旋转?…

react方法返回html_React全家桶之React基础(推荐新手必看)

学习目标安装create-react-app脚手架熟练React基础语法掌握JSX语法掌握setState掌握React生命周期掌握props传递参数掌握React组件通信资源reactcreate-react-app 起步上手npm i -g create-react-app 安装官方脚手架create-react-app 01_react 初始化react的api比较少,基本学习…

华为4g无线路由器虚拟服务器设置方法,华为4g2pro路由器虚拟服务器设置

华为4g2pro路由器虚拟服务器设置 内容精选换一换当前在部分区域中,路由表已从虚拟私有云中解耦,解耦后路由表拥有独立入口,支持路由表与子网关联功能,请以实际界面为准。未解耦:在虚拟私有云详情页的“路由表”页签&am…

echarts加载动画效果_入门ae教程:科技类的加载动画,非常酷炫的效果,附带教程...

效果图今天这个教程属于初学者的教程,很简单,但是科技类的加载动画,我个人觉得都是非常酷的(每天5分钟,充实一整天)教程1、首先打开我们的AE2、新建一个合成,1080*660px,持续时间10秒将我们的素材导入AE中&…

dell服务器T100无法进入系统,DELL服务器开机Alert!Cover was previously removed F1

服务器是戴尔的,dell poweredge T100。开机之后出现Alert!Cover was previously removed.Strke F1 to retuy boot. F2 for setup utility.它的意思是“主机盖被移动了”。是机箱防盗监测机箱防盗监测器可以检测到机箱是否被打开。系统设置程序中的“Chas…

结果显示窗口如何缩小_Proe草绘时提示“截面再生失败。不合适的尺寸”如何处理?...

我们在Proe中草绘的时候一般都是先绘制出整个草绘的大致外形,然后再标注尺寸,由于起初没有把握好尺寸的大小,外形虽然大致相同,但是当前的草绘尺寸与目标草绘尺寸大小差别过大就会出现这样的一个情况:系统会在信息栏提…

把变量赋值给寄存器_散装 vs 批发谁效率高?变量访问被ARM架构安排的明明白白...

作为过来人,我发现很多程序猿新手,在编写代码的时候,特别喜欢定义很多独立的全局变量,而不是把这些变量封装到一个结构体中,主要原因是图方便,但是要知道,这其实是一个不好的习惯,而…

单元格自适应宽度_最详细的Excel模块Openpyxl教程(二)-单元格操作详解

在以前的推文中,我们介绍了操作Excel的模块openpyxl的入门知识,相关推文可以从本公众号的底部相关菜单获取。接下来的推文我们来学习一下openpyxl这个python模块中的其他知识,本次推文我们来学习一下单元格(cell)操作的…

动态参数 maven_使用Jenkins Git参数实现分支标签动态选择

1.1 为什么要使用GIT参数?我们为什么要使用 git参数呢? 每个项目代码库都会有不同的分支,(如果你没有用多分支流水线的情况下)对于普通的流水线项目我们可以 让一条流水线来支持多个分支的发布,其实有时候你会发现每个分支的集成步…

走线和交互式布线_画PCB时,一些非常好的布线技巧

画PCB时,一些非常好的布线技巧布线是PCB设计过程中技巧最细、限定最高的,即使布了十几年布线的工程师也往往觉得自己不会布线,因为看到了形形色色的问题,知道了这根线布了出去就会导致什么恶果,所以,就变的…

相机裁剪旋转_怎么旋转视频画面角度

在用手机或相机拍摄视频时,有时候画面会出现镜像、画面倒转的情况,影响观看体验,那么视频怎么旋转才能将画面变为正常播放?有很多方法可以做到,以下我为你挑选了最简单的工具,详细给你说说:在线…

新代数控系统参数说明书_台湾新代宏程序编程书

点击右上角关注公众号,每天更新其实说起来宏就是用公式来加工零件的,比如说椭圆,如果没有宏的话,我们要逐点算出曲线上的点,然后慢慢来用直线逼近,如果是个光洁度要求很高的工件的话,那么需要计算很多的点&…

pycharm 开发app_windows及mac下开发Excel, python+xlwings开发环境配置

背景:孩子他妈天天excel办公,看她每天大量重复性的工作,她是时候学习python来解放自己了,虽然我不用python ~ ~网络搜索 xlwings 是python下非常强大的处理Excel的库开发IDE选择Pycharm或者vs code配置开发环境,折腾了…

sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程

本篇笔记将为大家介绍 SequoiaDB 巨杉数据库查询 SQL 语句的执行过程,以及查询语句执行过程中实例层、协调节点、编码节点、数据节点各自承担的功能。应用程序或用户想要从数据库查询需要的数据,首先通过 API 或 client 端连接数据库,将查询 …

服务器主机linux安装mysql_linux服务器上安装mysql

mysql版本:mysql-5.6.44-linux-glibc2.12-x86_64.tarlinux操作系统和版本信息:1、检查linux服务器上是否已安全mysql[rootlocalhost ~]# rpm -qa|grep -i mysql未安装则无任何信息返回,若已安装则会返回已安装的版本信息,可通过--…

mysql中rownum分页_Oracle数据库中rownum分页

测试人员在项目测试中发现查询结果列表分页的时候,有的数据在好几页中重复显示,有的则一次都不显示,经过分析sql,原来问题出在测试人员在项目测试中发现查询结果列表分页的时候,有的数据在好几页中重复显示&#xff0c…

python买东西_Python实战之ATM+购物车

学python一个月以来的第一个工程级别项目!!!!!1.首先分析项目需求:模拟实现一个ATM 购物商城程序额度 15000或自定义---->注册功能实现购物商城,买东西加入 购物车,调用信用卡接口结账----->购物车,支付可以提现,手续费5%----->提现…