一、创建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});

固定集合特点:
    1、到达数据空间或者文档数的上限,则扔掉最老的文档
    2、MySQL的数据copy使用的是binlog,而MongoDB数据copy则使用固定长度的集合
    3、固定集合不能转换为正常的集合,正常的集合可以转化为固定集合,转化方式如下:
        db.runCommand({"covertToCapped":"collection-name", size:100000,max:1000});

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 集合与文档操作的更多相关文章

  1. MongoDB系列---集合与文档操作03

    MongoDB-——Collection 学习大纲: 1.集合操作 2.文档操作 知识回顾: 上一篇我们讲述了如何对MongoDB的权限和用户进行日常的基本操作,来达到我们对数据库的基本安全保障. 一 ...

  2. MongoDB学习笔记——文档操作之查询

    查询文档 使用db.COLLECTION_NAME.findOne()可以查询所有满足条件的第一条数据 预发格式如下: db.COLLECTION_NAME.findOne(<query> ...

  3. MongoDB学习笔记——文档操作之增删改

    插入文档 使用db.COLLECTION_NAME.insert() 或 db.COLLECTION_NAME.save() 方法向集合中插入文档 db.users.insert( { user_id ...

  4. MongoDB内嵌文档操作

    实体定义: [BsonIgnoreExtraElements] public class Person : BaseEntity { public string FirstName { get; se ...

  5. mongodb安装,库操作,集合操作(表),文档操作(记录)

    安装 1.下载地址 https://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-4.0.8-signed.msi 2.如果报没 ...

  6. MongoDB数据库、集合、文档的操作

    MongoDB系列第一课:MongDB简介 MongoDB系列第二课:MongDB环境搭建 MongoDB系列第三课:MongDB用户管理 MongoDB系列第四课:MongoDB数据库.集合.文档的 ...

  7. MongoDB模拟多文档事务操作

    Mongodb不支持多文档原子性操作,因此依据两阶段提交协议(Two Phase Commits protocol)来模拟事务. 以两个银行账户之间的转账行为为例,来说明如何实现多文档间的事务操作. ...

  8. MongoDB入门---文档操作之增删改

    之前的两篇文章,已经分享过关于MongoDB的集合还有数据库的各种操作,接下来就涉及到最主要的喽,那就是数据方面的操作,在这里叫做文档操作.话不多说,大家来看正文.     首先来看一下它的数据结构: ...

  9. MongoDB数据库文档操作

    前面的话 本文将详细介绍MongoDB数据库关于文档的增删改查 数据类型 在介绍文档操作之前,首先要了解MongoDB的数据类型 MongoDB支持许多数据类型,包括 1.字符串 - 这是用于存储数据 ...

随机推荐

  1. Python-04-数据结构

    一.数字 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六进制表示 ...

  2. web框架解析

    一.白手起家 要想模拟出web请求响应的流程,先想想平时我们是怎么上网浏览网页的?首先打开浏览器,然后在地址栏中输入我们想要访问的页面,紧接着按下回车键Enter,最后跳转至目标页面(当然我们也会出现 ...

  3. 07 IO流(四)——文件字节流 FileInputStream/FileOutputStream与文件的拷贝

    两个类的简述 专门用来对文件进行读写的类. 父类是InputStream.OutputStream 文件读入细节 FileOutputStream流的构造方法:new FileOutputStream ...

  4. PAT(B) 1064 朋友数(Java)

    题目链接:1064 朋友数 (20 point(s)) 题目描述 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号". ...

  5. Android—网络请求

    import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; ...

  6. (超实用)前端地址栏保存&获取参数,地址栏传输中文不在乱码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://www.cnblogs.com/autoXingJY/p/115965 ...

  7. HTTP无状态协议理解

    TTP协议是无状态协议. 无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大.另一方面,在服务器不需要先前信息时它的应 ...

  8. Lucid Dream

    Lucid Dream 作者:Lo Stigmergy链接:https://www.zhihu.com/question/21260829/answer/35733194 清醒状态下时意识和潜意识基本 ...

  9. S3C2440 块设备(待续)

    1.块设备只能以块为单位接受输入和返回输出,而字符设备则以字节为单位 2.块设备对于I/O请求有对应的缓冲区,因此他们可以选择以什么顺序进行响应,字符设备无须缓冲且被直接读写.对于存储设备而言调整读写 ...

  10. Redis系列之-—内存淘汰策略(笔记)

    一.Redis ---获取设置的Redis能使用的最大内存大小 []> config get maxmemory ) "maxmemory" ) " --获取当前内 ...