MongoDB的介绍

  MongoDB: 是一个基于bson(二进制json)的NoSQL数据库
  MongoDB的三要素:
    数据库: 类似于MYSQL的数据库
    集合: 类似于MYSQL的表
    文档: 类似于mysql的记录(一行数据)

终端  

操作数据库的命令:

  查看当前所在数据库:db

  查看所有的数据库:show dbs/show databases

          

  切换数据库:use 数据库名(切换到没有的数据库, 会自动创建)

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

操作集合的命令:

  创建集合:db.createCollection('集合名') / db.集合名.insert(数据)

       数据为json格式 --> {键:'值'}

  查看集合:show collections

  删除集合所有数据:db.集合名.drop()

  增删改查:_id字段如果没有手动指定会自动添加

    插入(insert):db.集合名称.insert(文档)

      db.student.insert({'_id':1,name:'zhangsan'})

    保存(save):db.集合名称.save(文档)

      db.student.save({'_id':1,name:'zhangsan'})

    insert 与 save 的异同点:
      相同点:如果没有指定_id,都会生成一个ObjectID类型的_id字段
      区别: 存在相同的_id字段, insert报错, save覆盖原有操作

    更新:db.集合名称.update(<query>,<update>,{multi:<boolean>})

      query:更新条件

      update:更新的数据,默认覆盖原有数据,如果要部分更新需要使用 -->  $set

      multi:是否更新多条,默认只更新一条,如果要更新多条 --> {multi:true}

    删除:db.集合名称.remove(<query>,{justOne:<boolean>})

      query:删除数据的条件,默认删除所有满足条件的数据

      justOne:用于指定是否只删除一条

          如果指定为True, 则只删除一条 --> {justOne:true}

数据查询:

  查询所有满足条件的数据:db.集合名称.find({条件文档})

  

  查询第一个满足条件的数据:db.集合名称.findOne({条件文档})

  比较运算符:

    等于: --> {age:18}

    小于:--> $lt --> {age:{$lt:18}}

    小于等于:--> $lte

    大于:--> $gt

    大于等于:--> $gte

    不等于:--> $ne

  

  逻辑运算符:

    and: --> db.集合名称.find({条件1,条件2}) --> {age:{$gt:18},gender:true}

    or: --> $or --> db.集合名称.find({$or:[{条件1},{条件2}])

    混合查询

 

  范围运算符:

    $in:在某个范围,不是区间,指列表里的数字 --> {age:{$in:[19,22,25]}}

  

    $nin:不在某个范围 --> $nin:[,]

  正则:

    // --> {name:/^张/} --> 只能在终端使用

    $regex  --> {name:{$regex:'^张'}} --> 可在python中使用

  

  分页查询:先跳过再限制 --> 效率高

    limit():用于读取指定数量的文档

      db.集合名称.find().limit(数量)

    skip():用于跳过指定数量的文档

      db.集合名称.find().skip(数量)

  

  显示部分字段:db.集合名称.find({},{字段名:1,字段名:1,_id:0})

    _id默认是显示的,如果不显示 --> _id:0 ,其他字段不显示则不写

  

  排序:对集合进行排序,1:升序,-1:降序

    sort() --> db.集合名称.find({文档条件}).sort({字段:1/-1,字段:1/-1...})

  

  统计个数:

    db.集合名称.find({文档条件}).count()

    db.集合名称.count({文档条件})

  消除重复:

    distinct():对数据进⾏去重 --> db.集合名称.distinct('去重字段',{文档条件})

  

聚合:

  db.集合名.aggregate({$group:{_id:'$分组字段',显示字段:{$聚合函数:值}}})

  

  显示某些字段:$push --> 生成一个列表

  

  显示整个文档:$$ROOT

  

  

索引:

  建立索引:db.集合名.ensureIndex({属性名:1})  1:升序,-1:降序

  

  建立唯一索引:默认情况索引字段是可以重复的,可以指定索引唯一

    db.集合名.ensureIndex({属性名:1},{unique:true})

  

  查看当前集合的所有索引:db.集合名.getIndexes()

  删除索引:db.集合名.dropIndex({索引字段:1}

  测试索引效率:

  

python与MongoDB交互

1. 安装第三方插件:pip install pymongo

2. 导包:

  from pymongo import MongoClient

3. 实例化mongo客户端对象:

  client = MongoClient()

4. 指定集合:

  collection = client['库名']['集合名']

5. 增删改查
添加一条数据: insert_one(字典)

collection.insert_one({'_id': 8, 'name': '大乔', 'hometown': '长安', 'age': 20, 'gender': False})

添加多条数据: insert_many(字典列表)

 ls = [{'_id': 9, 'name': '凯', 'hometown': '长安', 'age': 25, 'gender': True},
{'_id': 10, 'name': '苏烈', 'hometown': '长安', 'age': 30, 'gender': True},
{'_id': 11, 'name': '孙策', 'hometown': '东吴', 'age': 29, 'gender': True}
]
collection.insert_many(ls)

查找一条数据: find_one(条件字典)

print(collection.find_one({'hometown': '长安'}))

查找全部数据: find, 返回一个游标对象, 只能遍历一次

 ret = collection.find({'hometown': '长安'})
for i in ret:
print(i)

更新一条数据:注意使用$set命令: update_one

collection.update_one({'name': '孙尚香'}, {'$set': {'name': '甄姬'}})

更行全部数据: update_many

collection.update_many({'gender':False},{'$set':{'age':18}})

删除一条数据: delete_one

collection.delete_one({'name':'大乔'})

删除全部数据: delete_many

collection.delete_many({'gender':True})
client .close()

MongoDB的基础命令的更多相关文章

  1. MongoDB 部署 & 基础命令

    MongoDB 官方文档 MongoDB 介绍 Mongodb 由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统. 是专为可扩展性,高性能和高可用性而设计的数据库, 是非关系型数据库中 ...

  2. mongodb常用基础命令

    查看当前使用的数据库,也可以直接用dbdb.getName() 显示当前db状态db.stats() 当前db版本 db.version() 查看当前db的链接机器地址db.getMongo() 查看 ...

  3. MongoDB基础命令及操作

    MongoDB:NoSQL数据库 MongoDB中的重要指示点 MongoDB中的三要素 数据库 集合 文档 MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去 ...

  4. MongoDB 学习笔记一 安装以及基础命令

    一.MongoDB安装配置 1.获取最新版本号: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩就可 ...

  5. 2、链接数据库+mongodb基础命令行+小demo

    链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...

  6. MongoDB 目录分析、基础命令、参数设置

    目录分析 1.整体目录 以msi默认的data.log路径安装,才会有data.log文件夹. 2.bin目录 3.log目录 基础命令 1.服务器端基础命令 net  start  MongoDB  ...

  7. win7 64位下 mongodb安装及命令运行

    有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...

  8. [整理]MongoDB 经常使用命令总结

    MongoDB 经常使用命令总结 简单的的增删改查数据 在查询结果中指定显示或者不显示某个字段 比如,我们希望在 lessons 集合中查找全部数据,可是不希望在返回结果中包括 slides 字段:由 ...

  9. 一点MongoDB的基础及mongodb在mac上的安装

    最近发现维持写博客的习惯还是挺困难的,尤其对我来说,计划好的事过了好长时间才想到要去做. 这段时间一直在熟悉MongoDB,首先我是参考的这一篇:8天学通MongoDB   原博主写得非常好,我这里就 ...

随机推荐

  1. js数组和表的基本操作

    数组 var v = [3, 6, "hello"]; console.log(v.length); 数组的遍历1 function ss() { for (var i = 0; ...

  2. .net core session的使用步骤

    步骤 操作 备注 1   Microsoft.AspNetCore.Session Microsoft.AspNetCore.Http.Extensions nuget安装包 2 ConfigureS ...

  3. 分库分表(4) ---SpringBoot + ShardingSphere 实现分表

    分库分表(4)--- ShardingSphere实现分表 有关分库分表前面写了三篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论) 3.分库 ...

  4. Android OkHttp + Retrofit 取消请求的方法

    本文链接 前言 在某一个界面,用户发起了一个网络请求,因为某种原因用户在网络请求完成前离开了当前界面,比较好的做法是取消这个网络请求.对于OkHttp来说,具体是调用Call的cancel方法. 如何 ...

  5. 04-09 XgBoost算法

    目录 XgBoost算法 一.XgBoost算法学习目标 二.XgBoost算法详解 2.1 XgBoost算法参数 2.2 XgBoost算法目标函数 2.3 XgBoost算法正则化项 2.4 X ...

  6. COGS 2510. 拯救紫萱学姐

    [题目描述] 其实在开考前半个小时题面并不是这样的. 由于明天要考试,同学们要把抽屉里的书都搬空,书很多而且办了走读不能回寝室的学长一眼就看到了回班撩他的学姐,于是就把学姐当学长用♂了:“帮我把这摞书 ...

  7. 代码审计-DedeCMS-V5.7前台任意用户密码重置

    0x01 漏洞影响 该漏洞允许攻击者修改任意前台用户密码. 0x02 漏洞利用条件 1,开启会员模块 2,攻击者拥有一个正常的会员账号 3,目标没有设置安全问题 0x03 漏洞分析 漏洞文件:/mem ...

  8. 爬虫2:html页面+beautifulsoap模块+post方式+demo

    爬取html页面,有时需要设置参数post方式请求,生成json,保存文件中. 1)引入模块 import requests from bs4 import BeautifulSoup url_ = ...

  9. PHP array_pop

    1.函数的作用:删除数组的最后一个元素并返回 2.函数的参数: @params array &$array 3.注意点: 每次调用之后,重置指针 4.例子: <?php $product ...

  10. ‎Cocos2d-x 学习笔记(21.1) ScrollView “甩出”效果与 deaccelerateScrolling 方法

    1. 简介 “甩出”效果是当我们快速拖动container并松开后,container继续朝原方向运动,但是渐渐减速直到停止的效果. ScrollView的onTouchEnded方法会设置Timer ...