MongoDB的增删改查 转
MongoDB的增删改查
(黎明你好原创作品,转载请注明)
MongoDB中数据的基本单元叫做文档,采用json的键-值的方式。多个键及其关联的值有序的存放在一起变是文档。类似于编程语言中的键值关系。MongoDB文档都是BSON文档,他是一个JSON的二进制形式。
MongoDB的文档

MongoDB中文档被存储在集合中。集合是一组有关系索引的文档。集合类似于关系数据库中的表。
MongoDB的集合

2.1 方法参考
查询游标方法
| 名称 | 说明 |
| cursor.count() | 返回游标中的文档的数量。 |
| cursor.explain() | 报告的查询执行计划,包括索引使用的游标。 |
| cursor.hint() | 若要使用查询的特定索引的部队 MongoDB。 |
| cursor.limit() | 约束游标的结果集的大小。 |
| cursor.next() | 返回游标中的下一个文档。 |
| cursor.skip() | 返回一个游标,开始传递或跳过的一些文件后才返回结果。 |
| cursor.sort() | 返回结果排序根据排序的规范。 |
| cursor.toArray() | 返回一个数组,包含由光标返回的所有文档。 |
| 名称 | 说明 |
| db.collection.insert() | 在集合中创建一个新文档。 |
| db.collection.save() | 提供insert()和update ()插入新文件的包装。 |
| db.collection.update() | 修改集合中的文档。 |
| db.collection.find() | 集合上执行查询,并返回一个游标对象。 |
| db.collection.findOne() | 执行查询,并返回一个单独的文档。 |
| db.collection.remove() | 从集合中删除的文件。 |
| db.collection.count() | 换行计数集合或匹配查询中返回的文档数的计数。 |
| db.collection.distinct() | 返回一个数组没有指定的字段不重复值的文件。 |
2.2 Insert()
- db.collection.insert(document)
Insert()方法有以下行为:
如果该集合不存在,insert()方法将创建集合。
如果文档没有指定一个_id后缀字段,然后 MongoDB 将添加一个_id字段并使用ObjectId为文档分配取值。
如果文档需要增加一个新的字段,则insert()方法可以为文档插入新的字段。这不需要更改集合的数据模型或现有的文档。
- db.user.insert({_id: "1", name:{username: "limingnihao", nickname: "黎明你好"}, password: "123456"})
- db.user.insert({_id: "2", name:{username: "zhoujielun", nickname: "周杰伦"}, password: "123456", birth: ISODate('1979-01-18')})
- db.user.insert({_id: "3", name:{username: "caiyilin", nickname: "蔡依林"}, password: "123456", birth: ISODate('1980-09-15'), special:["看我72变", "花蝴蝶", "特务J"], regionName: "台湾"})
2.3 Save()
- db.collection.save(document)
插入一个新的文档,或者根据其文档的参数更新现有的文档。
如果文档不包含一个_id的字段进行save时,mongod将向文档中添加一个_id字段并将其分配一个ObjectId。
如果文档中包含一个_id字段和值进行save ()方法时,则在集合中查询此_id的文档执行的是upsert操作。如果集合中不存在具有指定的_id值的文档,save ()方法执行的是insert操作。save ()方法执行时会将现有文档中的所有字段都替换为新文档中字段。
- db.user.save({_id: "1", name:{username: "limingnihao", nickname: "黎明你好"}, password: "123456", birth: ISODate('1985-07-15')})
2.4 Update()
- db.collection.update( <query>, <update>, <upsert>, <multi> )
修改现有存在的文档或集合时使用。
默认的update()方法值更新单个文档。但是如果multi参数设置为true,则更新操作可以更新全部符合条件的文档。
Query – 类型:文档;用于更新选择过滤。
Update – 类型:文档;需要更新的文档的内容。
Upsert – 类型:文档或boolean;设置为true时,当查询没有匹配到文档时进行新建。默认值为false
Multi: - 类型:文档或boolean;设置为true时,则更新满足查询条件的所有文档(多个)。设置为false时只更新单个文档。默认为false。
字段更新操作方式
| 名字 | 说明 |
| $inc | 用来增加已有键的值,或者在键不存在时创建一个键。是专门来增加(和减少)数字的。只能用于整数、长整数或双精度浮点数。要是用在其他类型的数据上就会导致操作失败。 |
| $rename | 重命名字段。新的字段名称不能和文档中现有的字段名相同。 |
| $setOnInsert | 执行insert操作时,操作给相应的字段赋值。 |
| $set | 用来指定一个键的值。如果这个键不存在,则创建它。 |
| $unset | 从文档中移除指定的键。 |
- db.user.update({_id: "1"}, {$inc:{age: 1}}, {multi:true})
- db.user.update({_id: "1"}, { $rename: { 'password': 'pwd'}})
- db.user.update({_id: "4"}, { $setOnInsert: { works: 5}}, {upsert: true})
- db.user.update({_id: "1"}, {$set:{password: "654321", age: 28}})
- db.user.update({_id: "4"},{$unset: {"works": 5 }})
2.5 Find()
- db.collection.find(<criteria>, <projection>)
- db.collection.findOne(<criteria>, <projection>)
Criteria - 类型:文档;可选,文档的查询过滤条件。
Projection - 类型:文档,对结果进行字段匹配,{ field1: <boolean>, field2: <boolean> ... }。
后面还可以:Sort()排序、Limit()限制个数、Skip()起始点。
- db.collection.find(<criteria>, <projection>)返回集合
- db.collection.findOne(<criteria>, <projection>)返回一个
- db.user.find({_id: "1"})
- db.user.find({works: 5})
- db.user.find().sort({age:1})
- db.user.find().limit(2).sort({age:1})
- db.user.find().skip(1).limit(2).sort({age:1})
2.6 Remove()
- db.collection.remove(query, justOne)
Query – 类型:文档;用于删除选择过滤。
JustOne – 类型:boolean;当设置为true时只删除一个文档。
- db.user.remove({_id: "4"}, true)
2.7 Count()
- db.collection.count(<query>)
Query – 类型:文档;用于查询选择过滤。
- db.user.count({age: 1})
2.8 Distinct()
- db.collection.distinct(field, query)
Field – 类型:字符串;返回非重复的字段。
Query – 类型:文档;查询条件。
- db.user.distinct("_id", {age: 1})
MongoDB的增删改查 转的更多相关文章
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- Java实现mongodb原生增删改查语句
Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- C# 对MongoDB 进行增删改查的简单操作
C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库 /// & ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- 2,MongoDB之增删改查及pymongo的使用
本章我们来学习一下关于 MongoDB的增删改查 一.MongoDB操作 之 原生ORM,根本不存在SQL语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 是的,Mong ...
- SpringBoot操作MongoDB实现增删改查
本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...
- MongoDB之增删改查(一)
本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...
随机推荐
- Git之分支创建策略
分支策略:git上始终保持两个分支,master分支与develop分支.master分支主要用于发布时使用,而develop分支主要用于开发使用. 创建master的分支developgit che ...
- UTF-8 带签名和不带签名的区别
就和字面上一样,带签名的UTF-8文件比不带签名的,在文件开头的地方就多了几个16进制字符--[EF BB BF ],这9个字符就是"签名",这样做的好处是让文本处理工具或者浏览器 ...
- WebSocket 服务器3
其实,在服务器的选择上很广,基本上,主流语言都有WebSocket的服务器端实现,而我们作为前端开发工程师,当然要选择现在比较火热的NodeJS作为我们的服务器端环境了.NodeJS本身并没有原生的W ...
- MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)
振动论坛原版主eight的经典贴http://www.chinavib.com/thread-45622-1-1.html MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于 ...
- 《JavaScript高级程序设计》chapter 1: javascript 简介
1.2.2 文档对象模型 DHTML的出现让开发人员无需重新加载页面就可以修改其外观了. 1.2.3 浏览器对象模型(BOM) BOM真正与众不同的地方在于他作为javascript实 ...
- 从0开始学Java——eclipse下运行servlet程序警告:Setting property 'source' to 'org.eclipse.jst.jee.server:类名' did not find a matching property.
在使用Eclipse 创建第一个 Servlet之后,并且配置好了tomcat,然后Run on server的之后,提示标题所示错误: 警告: [SetContextPropertiesRule]{ ...
- [CareerCup] 10.3 Integer not Contain in the File 文件中不包含的数
10.3 Given an input file with four billion non-negative integers, provide an algorithm to generate a ...
- 什么是co-training
首先先认识下什么是co-training: 在计算机视觉中,我们都知道训练一个分类器的时候,我们需要两类样本,分别是正样本和负样本.监督训练又可以成为off-line training,就是提前准备好 ...
- EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据
在前面的教程中,您完成School数据模型.在本教程中,您会读取和显示相关的数据 — — 那就是,实体框架将加载到导航属性的数据. 下面的插图显示页面,您将完成的工作. 延迟. 预先,和显式加载的相关 ...
- AngularJs-指令和指令之间的交互(动感超人)
前言: 上节我们学习到了指令和控制器之间的交互,通过给指令添加动作,调用了控制器中的方法.本节我们学习指令和指令之间是如何交互的,我们通过一个小游戏来和大家一起学习,听大漠老师说这是国外的人写的dem ...