环境
  MongoDB 4.0
  CentOS6.5_x64

一、连接
语法格式:

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

参考:MongoDB 连接

二、数据库

1、show dbs:命令可以显示所有数据的列表
2、db:命令可以显示当前数据库对象或集合。
3、use:如果数据库不存在,则创建数据库,否则切换到指定数据库。

4、db.dropDatabase() 删除当前数据库

[root@node102 bin]# ./mongo
...
> show dbs
admin .000GB
config .000GB
local .000GB
> db
test
> use admin
switched to db admin
> db
admin
> use wjy
switched to db wjy
> db
wjy

保留数据库:

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

三、集合

1、查询当前数据库中所有的集合(表)

show collections

2、显式创建collection:

db.createCollection(‘collectionName’)

3、隐式创建collection(插入数据前创建):

db.collectionName.insert(document);

4、删除collection:

db.collectionName.drop() ,

5、统计Collection中文档数量:

db.collectionName.count();

> use test
switched to db test
> db
test
> show collections
> db.createCollection('cols')
{ "ok" : }
> show collections
cols
> db.cols.insert({title: 'MongoDB 教程',
... description: 'MongoDB 是一个 Nosql 数据库',
... by: 'w3cschool',
... url: 'http://www.w3cschool.cn',
... tags: ['mongodb', 'database', 'NoSQL'],
... likes:
... })
WriteResult({ "nInserted" : })
> db.cols.count() > db.cols.drop()
true
> show collections
>

四、文档

1、新增

(1)增加单个文档。

> db.user.insert({name:"will",age:});
WriteResult({ "nInserted" : })
> show collections
user

(2)增加单个文档,并指定_id。

> db.user.insert({_id:,name:"will",age:,gender:"boy",email:"will@itsource.cn"});
WriteResult({ "nInserted" : })

(3)增加多个文档。

> db.user.insert([
... {name:"张三",age:},
... {name:"李四",age:},
... {name:"王五",age:}
... ])
BulkWriteResult({
"writeErrors" : [ ],
"writeConcernErrors" : [ ],
"nInserted" : ,
"nUpserted" : ,
"nMatched" : ,
"nModified" : ,
"nRemoved" : ,
"upserted" : [ ]
})
> db.user.count() >

注意:db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据

2、更新操作

语法:

db.collection.update(
<criteria>,
<objNew>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)

criteria : update的查询条件,类似sql update查询内where后面的。

objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的

upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。

multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新

writeConcern :可选,抛出异常的级别。

(1)只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

(2)全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

(3)只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

(4)全部添加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

3、删除操作

语法:

db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)

query :(可选)删除的文档的条件。

justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。

writeConcern :(可选)抛出异常的级别。

(1)删除user集合中_id属性值为9527的文档 。

db.user.remove({_id:9527});

(2)删除user集合中gender属性为boy的文档(默认删除多条数据)。

db.user.remove({gender:"boy"});

(4)删除user集合中gender属性为girl的文档,只删除1行。

db.user.remove({gender:"boy"},true);

(4)清空所有,类似truncate

db.user.remove({})

4、查询操作

语法:

db.collection.find(query, projection)

query :可选,使用查询操作符指定查询条件

projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

db.col.find().pretty():pretty() 方法以格式化的方式来显示所有文档。

(1)查询所有user集合中文档的数据。

db.user.find();

(2)查询user集合中所有的gender属性 (_id属性默认总是查出来)。

db.user.find({},{gender:true});

(3)查询user集合中所有的gender属性,且不查询_id属性。

db.user.find({},{_id:false,gender:true});

(4)查询user集合中所有gender属性值为boy的文档中的name属性。

db.user.find({gender:"boy"},{_id:false,name:true});

(5)查询user集合中所有gender属性值为boy并且年龄大于等于17的文档中的name属性。

db.user.find({gender:"boy",age:{$gte:17}},{_id:false,name:true,age:true});

官方最新版本增删改查操作文档

五、元数据

1、系统的命名空间
数据库的信息是存储在集合中。它们使用了系统的命名空间:dbname.system.*
在MongoDB数据库中名字空间 <dbname>.system.* 是包含多种系统信息的特殊集合(Collection),如下:
集合命名空间 描述
dbname.system.namespaces 列出所有名字空间。
dbname.system.indexes 列出所有索引。
dbname.system.profile 包含数据库概要(profile)信息。
dbname.system.users 列出所有可访问数据库的用户。
dbname.local.sources 包含复制对端(slave)的服务器信息和状态。
对于修改系统集合中的对象有如下限制。
在{{system.indexes}}插入数据,可以创建索引。但除此之外该表信息是不可变的(特殊的drop index命令将自动更新相关信息)。
{{system.users}}是可修改的。 {{system.profile}}是可删除的。

2、MongoDB 数据类型
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。

六、MongoDB客户端工具-MongoVUE

MongoVUE下载

MongoVUE使用

其他常用的MongoDB客户端管理工具

清单一

清单二

【MongoDB学习之二】MongoDB数据库、文档、集合、元数据的更多相关文章

  1. MongoDB学习笔记三—增删改文档上

    插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.fo ...

  2. MongoDB学习笔记四—增删改文档下

    $slice 如果希望数组的最大长度是固定的,那么可以将 $slice 和 $push 组合在一起使用,就可以保证数组不会超出设定好的最大长度.$slice 的值必须是负整数. 假设$slice的值为 ...

  3. Mongodb学习笔记二(Mongodb基本命令)

    第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...

  4. MongoDB学习记录(二) - MongoDB的"增查改删"操作之"增"

    如果做插入文档操作的集合不存在,那么集合将被创建 db.collection.insertOne() insertOne为collection插入一条文档,如果文档的_id字段未指定,MongoDB会 ...

  5. MongoDB数据库文档操作

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

  6. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  7. 《mongoDB》基本操作-创建/更新/删除文档

    一:基本操作 - db; 当前选择的集合(等于数据库名) > db demo -  use db_name; 选择你要操作的集合 > use demo switched to db dem ...

  8. MongoDb 学习笔记(一) --- MongoDb 数据库介绍、安装、使用

    1.数据库和文件的主要区别 . 数据库有数据库表.行和列的概念,让我们存储操作数据更方便 . 数据库提供了非常方便的接口,可以让 nodejs.php java .net 很方便的实现增加修改删除功能 ...

  9. MongoDB(四):数据类型、插入文档、查询文档

    1. 数据类型 MongoDB支持许多数据类型. 字符串 - 这是用于存储数据的最常用的数据类型.MongoDB中的字符串必须为UTF-8. 整型 - 此类型用于存储数值. 整数可以是32位或64位, ...

  10. MongoDB查询或修改内嵌文档

    作为非关系型数据库中的佼佼者,MongoDB一大优势在于能够在一条文档中存储对象类型的数据,适当增加冗余来让数据库更好用.文档中一个对象类型的字段在MongoDB中被称为内嵌文档(Embedded) ...

随机推荐

  1. Spring Boot 配置文件密码加密两种方案

    Spring Boot 配置文件密码加密两种方案 jasypt 加解密 jasypt 是一个简单易用的加解密Java库,可以快速集成到 Spring 项目中.可以快速集成到 Spring Boot 项 ...

  2. What Is React?--MVC

    React is a declarative, efficient, and flexible JavaScript library for building user interfaces. It ...

  3. (2)在树莓派安装运行在Python3上的OpenCV

    https://www.jianshu.com/p/56929416b4a1 http://www.eeworld.com.cn/afdz/article_2018030511619.html htt ...

  4. Ubuntu下python3安装tkinter包

    case1: 首先sudo apt-get update(如果不更新很有可能找不到tkinter),然后sudo apt-get install python3-tk,安装完成后就可以使用了. cas ...

  5. 51: Luogu 2485 模板

    $des$ 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给定y.z.p,计算满足y^x ≡z(mod p)的最小非负 ...

  6. 洛谷 P1396

    P1396 传送门 扯些题外话 讲真的我刚看到这个题的时候真的傻fufu的..... 大体题意 找出从s走到t的拥挤度最大值最小.. 思路 说最大值最小可能就会有dalao开始二分了. 想我这种的蒟蒻 ...

  7. 第03组 Alpha事后诸葛亮

    组长博客 项目Postmortem模板 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们软件要解决的的问题是福州大学校园二手书的处理问题.应该定 ...

  8. jQuery动画和遍历

    一.动画 1. 动画 1. 三种方式显示和隐藏元素 1. 默认显示和隐藏方式 1. show([speed,[easing],[fn]]) 1. 参数: 1. speed:动画的速度.三个预定义的值( ...

  9. ~/.ssh/config文件的使用

    Host github-A HostName github.com User git IdentityFile /Users/xxx/.ssh/id_rsa_A IdentitiesOnly yes ...

  10. v-model和 .sync

    1.v-model的双向数据绑定其实是一个语法糖,类似于,给子组件传入一个value值,并且监听子组件的input事件,在这个事件里将子组件传过来的新值赋值给父组件的value <Input v ...