MongoDB数据库基本命令
MongoDB的启动
先找到MongoDB所在的路径,然后执行以下代码
mongod --dbpath=E:\Program Files\MongoDB\Server\3.4\data\db
--dbpath后面写的是数据库存储数据的文件夹,先启动mongod是为了启动数据库的服务端,等待客户端的连接
然后再启动客户端去连接服务端,见到 > 就代表连接成功了
库的操作
1.查看所有的数据库
格式: show databases;
简写: show dbs;
2.创建或者使用一个数据库
格式: use 数据库名;
当对应的数据库不存在的时候,表示创建该数据库
如果数据库已经存在,表示使用该数据库
注意:如果创建了一个新的数据库,而该数据库中没有数据,则使用
show dbs查看的时候,任然看不到,插入数据库后,即可查看到
插入数据如: db.student.insert({name:"haha"})
3.查看当前使用的数据库
格式: db 代表的是当前数据库
或者 db.getName() 可以查看当前数据库的名字
4.删除当前数据库
db.dropDatabase()
集合的操作 ---相当于关系型数据库的 表
1.查看当前库中的所有集合
格式: show collections;
2.创建一个集合
方式1: db.createCollection("集合名") 集合名需要加上引号
例:db.createCollection("集合名") 方式2: db.集合名.insert(数据)
例:db.student2.insert({name:"张三"})
区别:
方式1是创建一个空的集合,如果集合已经存在,不会覆盖创建
方式2:如果对应的集合不存在表示创建一个集合,并插入数据
如果对应的集合存在,表示直接插入一条数据!
3.删除一个集合
格式: db.集合名.drop()
文档的操作 --- 相当于关系型数据库表中一行数据 row
1.插入数据
1.添加一个数据
格式: db.集合名.insert(数据)
数据: key-value的形式
是bson格式, 与json格式一样
格式: 1. {key1:value,key2:value, keyN:value}
2. [ {key1:value,key2:value, keyN:value}, {key1:value,key2:value, keyN:value}] # jsonArray
3. {key1:嵌套json数据,key2:value, keyN:value}
例: db.student.insert({name:'alex',age:66,address:"中南海",sex:"男"})
WriteResult({ "nInserted" : 1 })表示插入成功
注意: mongodb插入数据的时候,会默认生成一个 _id相当于关系型数据库中的主健
如: "_id" : ObjectId("5b8f45c12e3e35173c33f13c")
2.添加多个数据
格式: db.集合名.insert([数据1,数据2,数据n])
例: db.student.insert([{name:'tony',age:66,address:"北京",sex:"女"},
{name:'sakura',age:56,address:"陕西",sex:"女"},
{name:'egon',age:46,address:"中南海",sex:"男"}
3.插入数据 save 保存
格式: db.集合名.save(数据) 使用方法与insert一致
例: db.student.save({name:'马赛克',age:150,address:"东京",sex:"不明"}) 区别:
db.student.save({ "_id" :ObjectId("5b8f47d03d9b6b894071334b"),name:'马爸爸'})
如果使用的是save,而且设置_id属性,且_id已经存在时, 此时save表示修改数据 db.student.insert({ "_id" :ObjectId("5b8f47d03d9b6b894071334b"),name:'马妈妈'})
如果使用的是insert,而且设置_id属性,且_id已经存在时, 则insert会报错,
2.查询数据---结果是 bson的形式
1.查询所有的数据
格式: db.集合名.find()
2.根据条件来查询数据 --关系数据库: select 字段名, from 表 where 条件
格式: db.集合名.find(query,names)
参数query是查询条件
参数names 是要展示的字段名 注意: query,names都是json的数据格式
query参数 如: {age:} 表示查询age = 76的数据
names参数 如: {name:,age:} 表示只显示name属性和age属性
注意如果没有names,则所有的属性及值都显示 1表示显示, 表示不显示(当有1存在时,只允许_id:,别的为0会报错)
3.查询一条数据
格式: db.集合名.findOne(query,names)
4.根据_id来查询
例: db.student.findOne({"_id":ObjectId("5b8f47d03d9b6b894071334a")})
5.格式化查询结果
格式: db.集合名.find().pretty()
3.数据的修改 ---关系数据库 update 表名 set 字段名 = 属性值...where 条件
格式:db.集合名.update(query,set,{upsert:布尔类型,multi:布尔类型})
参数都是json的格式
1.query 查询条件
2.set 要修改的属性和对应的属性值
格式:db.集合名.update(query,{$set:{属性名:属性值}}) 必须写上$set,否则就是替换整个数据
格式:db.集合名.update(query,{$inc:{属性名:值}}) 表示在某个属性上增加某个值
3. upsert 表示在修改数据的时候,如果查询条件没有找到对应的数据,
是否将修改的内容当作新的数据添加到集合中
true 表示添加进来
false 表示不当作新数据添加进来
默认是false
例:
db.student.update({name:"哈哈"},{address:"七堡"},{upsert:true})
4.multi 表示在修改数据的时候,如果查询出了多条符合条件的数据,是否将多条数据全部进行修改
true 表示全部都修改
false 表示值修改匹配的第一条数据
默认是false
例:
db.student.update({name:"egon"},{$set:{sex:"不明"}},{multi:true})
4.删除数据 ---- delete from 表名 where 条件
格式:
db.集合名.remove(query,{justOne:布尔值})
例:
db.student.remove({name:"alex"})
db.student.remove({name:"eva"},{justOne:true})
注意:默认会将所有符合条件的数据都删除,
justOne表示是否只删除 第一条符合条件的数据
true 只删除一条, false表示全部删除, 默认为false
小结:删除数据时默认全部删除,若想删除一个需要{justOne:true}来控制, 而修改数据时默认值修改一个,若想全部修改需要用{multi:true}来控制
查询条件
1.比较运算符
$gt 大于
$lt 小于
$gte 大于等于
$lte 小于等于
$eq 等于 或者 :
$ne 不等于 格式: db.集合名.find({字段名:{运算符:值}}) 需求:查询年龄大于60的student
例: db.student.find({age:{$gt:60}}) 需求:查询年龄在大于等于40且小于等于60的数据
db.student.find({age:{$gte:40}})
2.逻辑运算符
$and 且或者 ,
格式: db.集合名.find({条件1,条件2})
格式2: db.集合名.find({$and:[{条件1},{条件2}]}) 需求:找出姓名是 alex的 年龄是 35的岁的数据?
db.student.find({name:"alex",age:35})
或者 db.student.find({$and:[{name:"alex"},{age:35}]}) 注:这里需要使用中括号来代表一个整体 需求:查询年龄在大于等于40且小于等于60的数据
error : db.student.find({age:{$gte:40},age:{$lte:60}})
正确写法: db.student.find({age:{$gte:40,$lte:60}})
注意: 以上写法后面的属性会覆盖前面的属性 且
db.student.find({$and:[{age:{$gte:40}},{age:{$lte:60}}]}) $or 或者
格式: db.集合名.find({$or:[{条件1},{条件2}]})
需求:查询数年龄是 35的或者 76的
db.student.find({$or:[{age:35},{age:76}]}) 需求: 查询出年龄是35的且住在东京的 或者 年龄76且住西安的
思路:(age = 35 and address = "东京") or (age = 76 and address = "西安")
$or 与 $and 综合使用
{$or:[{$and:[{age:35},{address:"东京"}]},$and:[{age:76},{address:"西安"}]}]} $not 非
格式: db.集合名.find({$not:{条件1}})
3.模糊运算符
格式: db.集合名.find({字段名:/匹配的数据/})
注意: / / 不需要加引号
4.分页 ---- 关系型数据库: limit 值1,值2
limit(number) 表示读取指点数量的数据 相当于 值2
skip(position) 表示跳到指定位置开始读数据 注: 位置从 索引0 开始 相当于值1 db.student.find().skip(3)
db.student.find().limit(3) 需求: 每页3条数据,获取3页数据
db.student.find().skip(6).limit(3)
需求: 每页3条数据,获取n页数据
格式: db.student.find().skip((n-1)*3).limit(3)
5.排序 sort 字段名 升序/降序
1: 表示升序 -1: 降序
格式: db.student.find().sort({字段名:1/-1})
需求: 按照年龄的升序排序
db.student.find().sort({age:1})
6.计算查询结果的数量
db.student.find().count()
MongoDB数据库基本命令的更多相关文章
- MongoDB 数据库、集合创建删除与文档插入
本文章主要介绍mongodb的基本命令,前提条件,你的本地已经安装了mongo. 一.基本命令使用(主要是创建,增删改.) 0.mongoDb统计信息 获得关于MongoDB的服务器统计,需要在Mon ...
- Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建
Mongodb数据库主从复制的搭建 Writeby:lipeng date:2014-10-22 最近项目上用到了位置查询,在网上 ...
- 基于C#的MongoDB数据库开发应用(4)--Redis的安装及使用
在前面介绍了三篇关于MongoDB数据库的开发使用文章,严格来讲这个不能归类于MongoDB数据库开发,不过Redis又有着和MongoDB数据库非常密切的关系,它们两者很接近,Redis主要是内存中 ...
- FineReport如何连接和使用MongoDB数据库
随着NoSQL数据库越来越流行,MongoDB数据库作为NoSQL数据库中的领头羊,使用也越来越广泛.为此,FineReport V8.0版本提供了数据连接和数据集接口,可以通过开发一款可以连接和使用 ...
- python操作mongodb数据库
一.MongoDB 数据库操作 连接数据库 import pymongo conn = pymongo.Connection() # 连接本机数据库 conn = pymongo.Connection ...
- NoSql 中Mongodb数据库的使用
1.NoSql数据库简介 2.MongoDB数据库的简介 3.MongoDB下Windows下的安装
- 线上mongodb数据库mLab使用总结
最近在CNode社区看到有人分享了免费的线上mongodb数据库(容量500M),今天去注册了一下,成功的将线下数据库替换掉了,现在就说一下它的使用和配置需要注意的地方: mLab是一款免费的在线mo ...
- mongoDB数据库和Spring MVC的整合
之前一直用到的项目是Spring MVC+maven+mysql的,最近有些数据需要用到mongoDB数据库,现在做一些总结. 第一步:加载jar.maven配置 <!-- mongodb开始 ...
- 【转载】CentOS6.5_X64下安装配置MongoDB数据库
[转载]CentOS6.5_X64下安装配置MongoDB数据库 2014-05-16 10:07:09| 分类: 默认分类|举报|字号 订阅 下载LOFTER客户端 本文转载自zhm&l ...
随机推荐
- ts-loader 安装问题
首先,有个问题:ts-loader是将typescript转成javascript,转成哪个版本的javascript版本? 查询到参考地址:http://morning.work/page/othe ...
- 使用 Weinre 调试移动网站
在 PC 端,我们可以使用 Firebug 或者 Chrome 开发人员工具方便的调试网站或者 Web 应用.但是,当我们想在移动端调试站点或者应用的时候,这些工具就派不上用场了.因此,移动开发人员都 ...
- tensorflow神奇问题
运行tensorflow程序时,遇到了各种奇葩的问题,比如: 1.Import Error: DLL load failed: The specified module could not be fo ...
- MySQL 5.6 (Win7 64位)下载、安装与配置图文教程
一. 工具 Win7 64位操作系统 二. 步骤 第一步:下载安装包 下载 地址:http://www.mysql.com/ 截止到目前(2016/7/24) ,官网的最新版本是5.7.13,不过自己 ...
- java微信开发之地图定位
页面代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...
- 第六节 DOM操作应用
创建.插入和删除元素 创建DOM元素: createElement(标签名); //创建一个节点 appendChild(节点); //追加一个节点 例如:document.body.appendCh ...
- 在线视频下载利器——youtube-dl
youtube-dl是谷歌出品的在线视频下载利器,可以用来下载youtube视频(前提是你得能上youtube). 使用方法很简单,只需要在cmd下执行youtube-de.exe +视频页面网址,程 ...
- weex安装失败,按照官网步骤多次失败后成功
在安装Weex Toolkit之前,需要确保安装了node, npm. yangfeifei:~ yff$ node -v v6.10.2 yangfeifei:~ yff$ npm -v 3.10. ...
- FIT9132 Introduction to Databases
FIT9132 Introduction to Databases2019 Semester 1Assignment 1 - Database Design - Monash Hospital (MH ...
- 剑指offer(59)按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 题目分析 这道题还是需要画图分析,不然不好找 ...