MongoDB文档的基本操作
1. MongoDB的安装方法
(1)下载MongoDB 相应的版本;
(2)设置数据文件和日志文件的存放目录;
(3)启动MongoDB服务;
(4)将MongoDB作为服务启动。
2. MongoDB文档基本操作的方法
(1)插入并保存文档;
(2)删除文档;
(3)修改文档。
一、数据库操作
use database_name,如果数据库不存在将创建一个新的数据库;
否则将返回现有的数据库。
db --显示当前选择的数据库
use mydb --创建或切换数据库
db
show dbs --显示所有数据库,没有刚建立的mydb
db.movie.insert({"name":"tutorials yiibai"}) --要显示的数据库,需要把它插入至少一个文件。
show dbs
db.dropDatabase() --删除数据库
show dbs
db命令显示的还是mydb,但是没有数据。
二、集合操作
a.显式创建集合
db.createCollection(name, options):name 是要创建的集合的名称. Options 是一个文件,用于指定配置的集合
db.createCollection("movie")
show collections
db.movie.drop()
show collections
b.隐式创建集合
db.movie.insert({"name":"tutorials yiibai"})
show collections --查询所有集合
db.getCollectionNames() --查询所有集合
db.movie.count() --查看集合中文档总数据量
db.movie.dataSize() --查看集合空间大小
db.movie.getDB() --查看集合所在数据库
db.movie.stats() --查看当前集合状态
db.movie.renameCollection("movies") --集合重命名
show collections
db.movies.copyTo("movie") --集合复制
db.movies.drop() --删除集合
db.movie.help() --查看集合帮助
db.getCollection("movie") --得到指定名称的聚集集合
db.printCollectionStats() --显示当前db所有聚集索引的状态
三、文档操作
3.文档操作-插入操作
1.插入操作
a.单个插入
db.movie.insert({"name":"HuanLeSong","Times":10000})
db.movie.insert({"name":"SanJie","Times":20000})
db.movie.insert({"name":"SanJie","Address":"China"})
db.movie.find()
movieVar1 = {"name":"HuanLeSong","Times":10000}; --创建文档变量,对象
movieVar2 = {"name":"SanJie","Times":20000};
movieVar3 = {"name":"SanJie","Address":"China"};
db.movie.insert(movieVar1)
db.movie.insert(movieVar2)
db.movie.insert(movieVar3)
db.movie.find()
db.movie.insert({"_id":08001,"name":"zhangsan"})
db.movie.find()
db.movie.insert({"_id":08001,"name":"lisi"})
db.movie.save({"_id":08001,"name":"lisi"})
db.movie.find()
Insert和Save的区别是:如果插入的集合的“_id”值,在集合中已经存在,用Insert执行插入操作会报异常,已经存在"_id"的键。用Save如果系统中没有相同的"_id"就执行插入操作,有的话就执行覆盖掉原来的值。相当于修改操作。
b.批量插入
采用数组的方式
db.movie.insert([{username:'aaa',password:'bbb',tel:'123123123'},{username:'bbb',password:'ccc',tel:'123123234'}]);
db.movie.find()
2.删除操作
db.movie.find()
db.movie.remove({"name":"HuanLeSong"}) --按条件删除
db.movie.find()
db.movie.remove({}) --删除所有(集合本身不删除)
db.movie.find()
show collections
db.movie.drop() --删除所有(集合带文档)
db.movie.find()
show collections
remove({})和drop()的区别:
remove({}):删除所有文档,但不会删除集合本身,原索引也会保留
drop():删除整个集合,包括索引,然后重新创建集合和建立索引
3.修改操作
文档存入数据库后,就可以用update方法来修改它,update有两个参数一个是查询文档,找出需要更新的文档。一个是修改文档,描述对找到的文档做哪些修改
更新操作是原子的,若是两个更新同时发生,先到达服务器的先执行。
a.替换更新update
db.movie.update({username:"bbb"},{password:"abc"});
db.movie.find()
b.修改器更新
I.$set修改器
$set用来指定一个键的值,如果这个键不存在,就创建它。并且,只修改第一个
db.movie.update({username:"aaa"},{$set:{password:"*****"}});
db.movie.find()
II.$unset修改器
$unset来删除一个键
db.movie.update({username:"aaa"},{$unset:{tel:1}});
db.movie.find()
III.$inc修改器
$inc用来增加已有的键值,或者在键值不存在时创建。
db.movie.update({username:"aaa"},{$inc:{age:2}}); --键值age不存在,创建age并赋值2
db.movie.find()
db.movie.update({username:'aaa'},{$inc:{age:2}}); --在原有的值上 age+2
db.movie.find()
IV.upsert
当update的第三个参数设置为true的时候,为upsert模式
upsert是一个特殊的更新。当没有文档符合更新条件,就会以这个条件创建新的文档。
db.movie.update({username:'aaa'},{$set:{abc:123}},true) --当没有文档符合更新条件,就会以这个条件创建新的文档
db.movie.find()
db.movie.update({username:'aaa'},{$set:{abc:234}},true) --当文档符合更新条件,就会更新文档
db.movie.find()
V.数组修改器
数组修改器只能用于数组。
$push会像已有的数组末尾添加一个元素
$pop会删除一个元素
db.movie.update({username:'aaa'},{$push:{arr:1}});
db.movie.find()
db.movie.update({username:'aaa'},{$push:{arr:2}});
db.movie.find()
db.movie.update({username:'aaa'},{$push:{arr:5}});
db.movie.find()
db.movie.update({username:'aaa'},{$push:{arr:3}});
db.movie.find()
db.movie.update({username:'aaa'},{$pop:{arr:1}}); pop原本是正向删除数组最后一个元素,取负号后-后倒序删除
db.movie.find()
db.movie.update({username:'aaa'},{$pop:{arr:-1}});
db.movie.find()
VI.数组的定位修改器
若是数组中多个值,我们只想修改其中的部分值,有两种方法操作数组中的值:通过位置和定位操作符($)
数组下标是从0开始
db.movie.update({username:'aaa'},{$set:{'arr.2':10}}); 数组第三个元素插入数值10
db.movie.find()
db.movie.update({'arr.2':10},{$set:{'arr.$':100}}); 数组第三个元素替换为100
db.movie.find()
VII.多文档修改
第四个参数设置为true
db.movie.insert([{username:'aaa',password:'bbb',tel:'123123123'},{username:'bbb',password:'ccc',tel:'123123234'}]);
db.movie.update({username:"aaa"},{$set:{password:"******"}},false,true);
db.movie.find()
MongoDB文档的基本操作的更多相关文章
- mongoDB 文档概念
mongoDB 文档概念 什么是文档 文档是 mongodb 基本的数据组织单元,类似于mysql 中的记录 文档由多个键值对组成,每个键值对表达一个数据项 属于 bson 数据 ps: bson ...
- mongoDB 文档操作_删
mongoDB 文档删除 MySQL对比 mysql delete from table where ... mongo db.collection.deleteOne(query) 删除函数 del ...
- Lucene7.2.1系列(二)luke使用及索引文档的基本操作
系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 luke入门 简介: github地址:https://githu ...
- mongodb文档支持的数据类型
版权声明:转载请标明来源. https://blog.csdn.net/u014285882/article/details/25510377 1. 存储类型 mongodb文档相似于json,但不是 ...
- MongoDB文档基本操作
一.插入文档 使用insert()或save()方法向集合插入文档 >db.COLLECTION_NAME.insert(document) 详细用法可以参考MongoDB菜鸟教程 二.查找文档 ...
- mongodb文档的CRUD
本章会介绍对数据库移入或者移出数据的基本操作 向集合添加文档 从集合删除文档 更新现有的文档 为这些操作选择合适的安全级别 添加删除数据库 添加数据库 :use foo 如果存在foo 就use ...
- MongoDB 文档的查询和插入操作
MongoDB是文档型数据库,有一些专门的术语,和关系型DB相似,但也有差异,例如,Collection类似于关系型DB的Table,document类似于row,key/value pair类似于c ...
- 3.从Node.js操作MongoDB文档
1.更新文档结构,而非SQL 2.数据库更新运算符 在MongoDB中执行对象的更新时,需要确切的指定需要改变什么字段.需要如何改变.不像SQL语句建立冗长的查询字符串来定义更新. MongoDB中可 ...
- MongoDB文档、集合、数据库简介
文档 概述 文档是MongoDB的核心概念,是数据的基本单元,非常类似于关系数据库中的行.在MongoDB中,文档表示为键值对的一个有序集.MongoDB使用Javascript shell,文档的表 ...
随机推荐
- SD--批量删除订单
SD--批量删除订单 在sap应用中常常会需要批量删除一些错误录入的单据,为此开发了一个小程序.该程序为了安全,程序做了一下控制 1.限制用户只能删除自己的订单,不能删除别人输入的订单,如果需要修改一 ...
- java虚拟机知识和 内存 堆(heap)、栈(stack)和方法区(method)
1.虚拟机实例 每个java程序都运行在自己的java虚拟机实例中,运行三个java程序就会得到三个虚拟机实例 守护线程(虚拟机自己使用,比如说执行垃圾收集任务的线程) 非守护线程(java初试线程, ...
- File操作-将txt里的内容写入到数据库表
package com.Cristin.File;//将txt里的内容写入到数据库表 import com.Cristin.MySQL.AddDataToDB;import org.testng.an ...
- React native中的组建通知通信:
有这么一个需求,在B页面pop()回到A页面,需要A页面执行刷新,那么我们可以采用以下方法: 1:在A页面Push到B页面中,加上一个A页面中的刷新函数做为参数,然后在B页面中在pop()函数封装后通 ...
- JAVA 面向对象中的多态
多态是继封装.继承之后,面向对象的第三大特性. 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态. Java作为面向对象的语言,同样可以描述一个 ...
- C# txt文件的读取与写入
C#创建记事本方法一://创建对象 FileStream stream = new FileStream(@"d:\aa.txt",FileMode.Create);//fileM ...
- OpenModelica读取文件
parameter String file = Modelica.Utilities.Files.loadResource("J:/git/tcs/tcs.txt"); 将文件名变 ...
- JS 字符串两边截取空白的trim()方法的封装
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- cocos2dx 编译遇到资源里有.svn文件不能删除报错的问题
使用cocos compile -p android 对项目进行编译的时候,遇到res文件中包含了只读属性的svn目录,不能进行删除而报错. 错误如下图(build_android.py里面对.svn ...
- 批标准化 Batch Normalization
2018-12-05 20:28:15 在机器学习领域有一个很重要的假设,即独立同分布假设,也就是说训练集和测试集是满足相同分布的,这是通过训练数据获得的模型能够在测试集获得好的效果的一个基本保障.而 ...