MongoDB 集合与文档操作
一、创建DB
1、查看DB
>show dbs
2、创建DB
>use mydb
3、查看当前DB
>db

4、删除DB
>use mydb
>db.dropDatabase()

二、创建集合
1、查看DB的集合
>show collections
2、创建集合
db.createCollection(name, options)
> db.createCollection("mycollection")

3、重命名集合
MongoDB Enterprise > db.trs_action_dzwl_zm_1.renameCollection("trs_action_dzwl_zm")

4、删除集合
db.collection.drop()
>db.mycollection.drop()

5、固定集合

>db.createCollection("user-max",{capped:true,size:1000000,max:10000,autoIndexId:true});

6、TTL集合(TTL索引)
三、插入文档
1、插入文档
db.COLLECTION_NAME.insert(document)
>db.mycollection.insert({title:'asasca',name:'xiaofuren',like:100})

2、3.2 版本后还有以下几种语法可用于插入文档
- db.collection.insertOne():向指定集合中插入一条文档数据
- db.collection.insertMany():向指定集合中插入多条文档数据
1)插入单条
>db.mycollection.insertOne({"as":300})

2)插入多条
>db.mycollection.insertMany([{"bbb":2300},{"cccc":21425}])

四、更新文档
1、更新文档语法
db.collection.update(
<query>, //update的查询条件,类似sql update查询内where后面的。
<update>, //update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
{
upset:<boolean>, //可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi:<boolean>, //可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
wrietConcern:<document> //可选,抛出异常的级别。
}
)
2、更新document

>db.mycollection.update({'bbb':2300},{$set:{'bbb':'This is Tom!'}})

3、save()方法
save() 方法通过传入的文档来替换已有文档。语法格式如下:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
示例
以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:
>db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
五、删除文档
1、删除语法
如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query :(可选)删除的文档的条件。
- justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
- writeConcern :(可选)抛出异常的级别。
2、删除选择的数据
> db.mycollection.remove({"bbb":'This is Tom!'})

3、删除所有数据
>db.mycollection.remove({})
4、新的删除方法
remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。
如删除集合下全部文档:
db.inventory.deleteMany({})
删除 status 等于 A 的全部文档:
db.inventory.deleteMany({ status : "A" })
删除 status 等于 D 的一个文档:
db.inventory.deleteOne( { status: "D" } )

5、remove与delete注意事项
remove() 方法 并不会真正释放空间。
需要继续执行 db.repairDatabase() 来回收磁盘空间。
> db.repairDatabase()
或者
> db.runCommand({ repairDatabase: 1 })
六、查询文档
1、find查询语法如下
db.collection.find(query, projection)
- query :可选,使用查询操作符指定查询条件
- projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
2、find查询示例
1)插入数据
MongoDB Enterprise > db.mycollection.insertMany([{"aaa":300,"name":'xiaoli'},{"bbb":400,"name":'laowang'},{"ccc":1200,"name":'boss'}])
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5def58cc4b686e3b924617f1"),
ObjectId("5def58cc4b686e3b924617f2"),
ObjectId("5def58cc4b686e3b924617f3")
]
}
2)查询数据
MongoDB Enterprise > db.mycollection.find()
{ "_id" : ObjectId("5def58cc4b686e3b924617f1"), "aaa" : 300, "name" : "xiaoli" }
{ "_id" : ObjectId("5def58cc4b686e3b924617f2"), "bbb" : 400, "name" : "laowang" }
{ "_id" : ObjectId("5def58cc4b686e3b924617f3"), "ccc" : 1200, "name" : "boss" }
3)格式化方式查询数据
MongoDB Enterprise > db.mycollection.find().pretty()
{
"_id" : ObjectId("5def58cc4b686e3b924617f1"),
"aaa" : 300,
"name" : "xiaoli"
}
{
"_id" : ObjectId("5def58cc4b686e3b924617f2"),
"bbb" : 400,
"name" : "laowang"
}
{
"_id" : ObjectId("5def58cc4b686e3b924617f3"),
"ccc" : 1200,
"name" : "boss"
}
3、findOne()
> db.mycollection.findOne()

4、MongoDB与RDBMS where 语句比较
| 操作 | 格式 | 范例 | SQL |
| 等于 | {key:value} | db.col.find({"name":"xiaoli"}) | where name='xiaoli' |
| 小于 | {key:{$lt:value}} | db.col.find({"class":{$lt:4}}) | where class<4 |
| 小于或等于 | {key:{$lte:value}} | db.col.find({"class":{$lte:4}}) | where class<=4 |
| 大于 | {key:{$gt:value}} | db.col.find({"class":{$gt:4}}) | where class>4 |
| 大于或等于 | {key:{$gte:value}} | db.col.find({"class":{$gte:4}}) | where class>=4 |
| 不等于 | {key:{$ne:value}} | db.col.find({"class":{$ne:4}}) | where class !=4 |
5、MongoDB AND OR 条件
1)AND条件
>db.col.find({"name":"xiaoli","class":4}).pretty
2)OR条件
>db.col.find({$or:[{"name":"xiaoli"},{"class":4}]})
3)AND与OR结合使用
>db.col.find({"class":{$gt:4},$or[{"name":"xiaoli"},{"name":"dawang"}]})
where class>4 and (name="xiaoli" or name="dawang")
MongoDB 集合与文档操作的更多相关文章
- MongoDB系列---集合与文档操作03
MongoDB-——Collection 学习大纲: 1.集合操作 2.文档操作 知识回顾: 上一篇我们讲述了如何对MongoDB的权限和用户进行日常的基本操作,来达到我们对数据库的基本安全保障. 一 ...
- MongoDB学习笔记——文档操作之查询
查询文档 使用db.COLLECTION_NAME.findOne()可以查询所有满足条件的第一条数据 预发格式如下: db.COLLECTION_NAME.findOne(<query> ...
- MongoDB学习笔记——文档操作之增删改
插入文档 使用db.COLLECTION_NAME.insert() 或 db.COLLECTION_NAME.save() 方法向集合中插入文档 db.users.insert( { user_id ...
- MongoDB内嵌文档操作
实体定义: [BsonIgnoreExtraElements] public class Person : BaseEntity { public string FirstName { get; se ...
- mongodb安装,库操作,集合操作(表),文档操作(记录)
安装 1.下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi 2.如果报没 ...
- MongoDB数据库、集合、文档的操作
MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...
- MongoDB模拟多文档事务操作
Mongodb不支持多文档原子性操作,因此依据两阶段提交协议(Two Phase Commits protocol)来模拟事务. 以两个银行账户之间的转账行为为例,来说明如何实现多文档间的事务操作. ...
- MongoDB入门---文档操作之增删改
之前的两篇文章,已经分享过关于MongoDB的集合还有数据库的各种操作,接下来就涉及到最主要的喽,那就是数据方面的操作,在这里叫做文档操作.话不多说,大家来看正文. 首先来看一下它的数据结构: ...
- MongoDB数据库文档操作
前面的话 本文将详细介绍MongoDB数据库关于文档的增删改查 数据类型 在介绍文档操作之前,首先要了解MongoDB的数据类型 MongoDB支持许多数据类型,包括 1.字符串 - 这是用于存储数据 ...
随机推荐
- oracle如何保证数据一致性和避免脏读
oracle通过undo保证一致性读和不发生脏读 1.不发生脏读2.一致性读3. 事务槽(ITL)小解 1.不发生脏读 例如:用户A对表更新了,没有提交,用户B对进行查询,没有提交的更新不能出现在 ...
- 07 UML类图
移步: https://www.cnblogs.com/coolstream/p/9572846.html
- C++ new/delete详解及原理
学了冯诺依曼体系结构,我们知道: 硬件决定软件行为,数据都是围绕内存流动的. 可想而知,内存是多么重要.当然,我们这里说的内存是虚拟内存(详情看Linxu壹之型). 1.C/C++内存布局 2.C语言 ...
- ActiveMQ 消息队列服务
1 ActiveMQ简介 1.1 ActiveMQ是什么 ActiveMQ是一个消息队列应用服务器(推送服务器).支持JMS规范. 1.1.1 JMS概述 全称:Java Message Serv ...
- babel tsc webpack
我要用啥?js的话:babel编译+webpack模块打包ts的话:tsc编译成js+babel编译+webpack模块打包浏览器情况:如果您的浏览器支持es6所有语法那么就可以只用webpack来处 ...
- php json_encode() 中文保留
这几天遇到了一个问题 给java传json的时候 没有处理中文 那边拿数据的时候说不是中文的 需要转一下 方法: 实际应用中,当有中文字符时,当直接使用json_encode() 函数会使汉字不 ...
- Effective Java 读书笔记(一):创建和销毁对象
1 构造器 => 静态工厂方法 (1)优势 静态工厂方法有名字 静态工厂方法不必在每次被调用时都产生一个新的对象 静态工厂方法能返回原返回类型的任意子类型的对象 静态工厂方法根据调用时传入的不同 ...
- RabbitMQ 应用二
在应用一中,基本的消息队列使用已经完成了,在实际项目中,一定会出现各种各样的需求和问题,RabbitMQ内置的很多强大机制和功能会帮助我们解决很多的问题,下面就一个一个的一起学习一下. 消息响应机制 ...
- @objc
Swift 和 Objective-C 的互调这个话题很大,今天我们重点看看其中一个小的知识点:@objc的使用. 用法 在 Swift 代码中,使用@objc修饰后的类型,可以直接供 Objecti ...
- 安卓开发之利用runOnUiThread在子线程更新UI
package com.lidaochen.test; import android.graphics.Bitmap; import android.graphics.BitmapFactory; i ...