就一数据库,掌握基本用法,其他的现学现卖就行了.

所以要把握基本套路.

创建数据库=>使用数据库=>创建集合=>使用集合=>创建文档=>使用文档

1.数据库

mongodb和mysql目前我发现了一个比较明显的区别是:

  mysql要想使用一个数据库,必须先创建一个数据库,而mongodb是直到你真正想某个数据库写入才会生成这个数据库.

数据库基本操作无非那么几个:

创建数据库:

如上所述,不存在的,简单的:use dbname

查看数据库都那些:show dbs

删除数据库:

db.dropDatabase()

总结,操作数据库:[创建数据库]=>选择数据库(use)=>删除数据库(db.dropDatabase())

实验证明,如果没有use直接删库,不会删除任何数据库.

2.数据集合

创建:

db.createCollection(collectionName,createOption)

createOption是一个词典,里面可以有4个键值对:capped(固定大小的集合),autoIndexId(真假),size(集合最大值,字节为单位),max(最大文档值)

例如,创建一个autoIndexId,无固定大小,无各种最大值的集合:

db.createCollection("collection1",{autoIndexId:true})

查看当前数据库集合状态:

show collections

删除数据库集合:

db.collectionName.drop()

3.数据行(文档)

创建|插入:

db.collectionName.insert(document)

如果插入多个文档呢???

db.collectionName.insertMany([document1,document2,...,documentn])

这里面所谓的document,实际是Binary JSON,即BSON,你可以单纯的看成是JSON,或者是Python的字典.

例如,文档格式有个字段,name,age,gender,profession,addr,tel.插入一个这样的信息,则可以写:

db.stu.insert({"name":"ZhangSan","age":22,"gender":"shemale","profession":"chairmanOfSchool","addr":"HeiLongJiang","tel":17777777777"})

MongoDB到目前为止,除了插入文档是必要之外,创建各种库,集合都是可以省略的...

由于MongoDB相对宽松的规则,所以,还可以使用save去插入|更新一些信息,核心就是保存之前不存在的当然就是插入了,保存之前有的就是更新了.用法:

db.collectionName.save(document)

查看集合中的所有文档:

db.stu.find()

删除:

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

参数全部可选.

删除多个:

db.collectionName.deleteMany({ "name":"ZhangSan" })

更新:

db.collectionName.update(<query>,<update>,{upsert,multi,writeConcern})

其中,后三个都为可选.upsert==update insert.writeConcern(报错级别)

例如:

db.stu.update({"tel":17777777777"},{$set:{"tel":"1"}})

如果更改某一列(字段),

db.stu.update({"tel":17777777777"},{$set:{"tel":"1"}},{multi:true})

只更新第一条记录:

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

全部更新:

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

只添加第一条:

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

全部添加加进去:

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

全部更新:

db.collectionName.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.collectionName.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

查询:

db.collectionName.find(<query>,projection)

其中,projection是可以包含或排除的一些返回结果,所以,例如:

db.collectionName.find({"addr":HeliLongJiang"},{addr:true})

OR:

db.collectionName.find({$or:[{key1:value1},{key2:value2}]})

返回指定字段:

db.CollectionName.find({},{addr:true})

4.数据字段(列)

5.数据索引(下标)

6.数据主键(标识作用的字段)

mongodb4简明笔记的更多相关文章

  1. Git & Github 一页简明笔记

    由于小组工程需要使用git&github的版本控制来协作,但我对其使用并不熟悉,特此写篇一页的笔记放在手边,备随时查阅. 相信这种一页的简明笔记,对大家也是有帮助的.我的笔记总结自廖雪峰的Gi ...

  2. sc7731 Android 5.1 LCD驱动简明笔记之三

    此篇笔记基于sc7731 - android 5.1,对lcd的gralloc库做一个简明笔记. 第一部分 调用gralloc.sc8830.so所谓的Gralloc模块,它就是一个模块,一个操作ke ...

  3. sc7731 Android 5.1 LCD驱动简明笔记之二

    此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebu ...

  4. 【python】命令行神器 Click 简明笔记

    全文拷贝自 命令行神器 Click 简明笔记 Click Click 是用 Python 写的一个第三方模块,用于快速创建命令行.我们知道,Python 内置了一个 Argparse 的标准库用于创建 ...

  5. HTTP2.0 简明笔记

    前言 RFC2616发布以来,一直是互联网发展的基石.HTTP协议也成为了可以在任何领域使用的核心协议,基于这个协议人们设计和部署了越来越多的应用.HTTP的简单本质是其快速发展的关键,但随着越来越多 ...

  6. nginx rewrite重写规则简明笔记

    nginx rewrite重写规则简明笔记 比方说http://newmiracle.cn/?p=888我要改成能这个访问http://newmiracle.cn/p888/ 首先用正则获取888 ^ ...

  7. 35-less 简明笔记

    分屏显示文本文件 less [options] [file-list] less与more类似,但比more更加完善 例如:在显示一屏文本之后,less将显示提示副等待下一条命令的输入;可以向前或向后 ...

  8. 异步任务神器 Celery 简明笔记

    转自:http://www.jianshu.com/p/1840035cb510 异步任务 异步任务是web开发中一个很常见的方法.对于一些耗时耗资源的操作,往往从主应用中隔离,通过异步的方式执行.简 ...

  9. Git & Github 一页简明笔记(转)main

    由于小组工程需要使用git&github的版本控制来协作,但我对其使用并不熟悉,特此写篇一页的笔记放在手边,备随时查阅. 使用方法:常用命令供随时查阅,其余内容供新手了解. 0. 常用命令一览 ...

随机推荐

  1. 如何求出数组中最小(或者最大)的k个数(least k问题)

    输入n个整数,如何求出其中最小的k个数? 解法1. 当然最直观的思路是将数组排序,然后就可以找出其中最小的k个数了,时间复杂度以快速排序为例,是O(nlogn): 解法2. 借助划分(Partitio ...

  2. angular2jsonp如何跨域请求百度API进行定位

    前提,百度api的申请,不会的可以百度一下,下面是连接 http://lbsyun.baidu.com/index.php?title=webapi/ip-api 1.appMoudle里引入 imp ...

  3. NOIP模拟赛D2T1自己的解题思路

    T1题目在此: 数轴上有n个球,每个球直径为1,第 ii 个球的左端点为pi即占据了数轴上[pi,pi+1][pi,pi+1]).在 P位置有一堵墙.有q个操作,每次要么以x位置为左端点放一个新球(如 ...

  4. 推荐一个网址:在线检查Yam文件语法格式的错误

    最近在学习Docker和K8S内容时候,经常会遇到要自己写一些容器部署或者组件部署的yaml文件. 但是苦于没有彻底熟悉yaml,有时候要到kubectl creat -f path 部署命令执行后, ...

  5. vue bus方式解决非父子组件间的传值

    对于非父子组件之间的传值 通常使用VUEX 和总线等方式解决 这里我聊聊发布订阅模式(总线) <body> <div class="app"> <ch ...

  6. PhpStorm中无法用post提交的解决方案

    这是一个简单的计算器,html页面: <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  7. [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明

    作用域访问权限: 程序实体访问权限(作用域)有三种:1. 包级私有(代码包)2. 模块级私有(代码包)3. 公开(全域). 一个函数是一个代码块.一个程序实体的作用域总是会被限制在某个代码块中.好处: ...

  8. grpc 入门(二)-- 服务接口类型

    本节是继上一章节Hello world的进一步深入挖掘; 一.grpc服务接口类型 在godoc的网站上对grpc的端口类型进行了简单的介绍,总共有下面4种类型[1]: gRPC lets you d ...

  9. 20155338 2016-2017-2 《Java程序设计》第九周学习总结

    20155338 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 整合数据库 JDBC入门 · 数据库本身是个独立运行的应用程序 · 撰写应用程序是 ...

  10. OO原则汇总

    SOLID原则:http://www.cnblogs.com/lanxuezaipiao/archive/2013/06/09/3128665.html https://www.cnblogs.com ...