启动mongodb服务端 : sudo service mongod start 或者 sudo /usr/local/mongodb/bin/mongod --config /etc/mongodb.conf

停止mongodb服务端: sudo service mongodb stop

查询mongodb服务器状态命令查询状态
ps -ajx|grep mongod 或者 sudo systemctl status mongodb

数据库操作

进入数据库:mongo

显示所有的数据库:show databases ->show dbs

查看选手某个数据库:db

数据库切换(选择和创建):use 数据库名  ps: use test  默认是不会出现这个数据库,除非创建集合才会出现

查看当前数据库名称:db

显示集合:show collections     ps:这里的集合数据于mysql里的表

查看集合的数据:db.集合名.find({})  ps:db.student.find({})   其中{}可以不写

删除数据库:db.dropDatabase()

sql语句中的删除数据库:drop database test3;

退出数据库:Ctrl+c或者exit

集合(表)操作

在某个数据库里面创建集合:db.createCollection(name, options)

  name是要创建的集合的名称

   options是一个文档,用于指定集合的配置 ,选项​​参数是可选的,所以只需要到指定的集合名称.

  ps: 创建集合,集合的名字叫students:db.createCollection("students")

查看当前数据库的所有集合:show collections或者show tables

删除集合: db.students.drop()

数据基本操作

插入数据:db.集合名称.insert(document)    插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId

  insert,如果存在会报错

  ps: db.students.insert({"name":"gj",gender:1})

查看数据:db.students.find({})或者db.students.find()

也可以自己指定id:

  ps:db.students.insert({id:"20180418","name":"gj",gender:1})

简单查询

查询所有的数据:db.students.find()或者db.students.find({})

更新数据:

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

参数query:查询条件,类似sql语句update中where部分

参数update:更新操作符,类似sql语句update中set部分

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

参数multi:可选,默认是false,表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新

  ps:默认值更新一条数据,并且结构被修改  db.student.update({},{name:'mnc'})

   默认值更新一条数据,只修改字段,不破坏数据  db.stu.update({},{$set:{name:'mnc'}})

    全文档找更新找到的第一条,把{name:'hr'}对应的这条修改成{name:'mnc'},其他字段全部丢掉

      db.students.update({name:"hr"},{name:"mnc",gender:1})

    指定属性更新,通过操作符$set数据结构不会被破坏,也是只修改一条  

      db.students.update({"name":"mnc"},{$set:{gender:0}})

修改多条匹配到的数据:多条操作一定要配合$set,否则会报错注意true和flase是小写

ps:把所有的性别都修改成女生  db.students.update({},{$set:{gender:0}},{multi:true})

 把所有的gj修改成“郭靖”,并且不破坏结构  db.students.update({"name":"gj"},{$set:{"name":"郭靖"}},{multi:true})

            "$set"也可加引号:db.students.update({"name":"gj"},{"$set":{"name":"郭靖"}},{"multi":true})

方法findOne():查询,只返回第一个文档:db.集合名称.findOne({条件文档})

方法pretty():将结果格式化: db.集合名称.find({条件文档}).pretty()

保存:

db.集合名称.save(document)   如果文档的_id已经存在则修改,并且结构变化,如果文档的_id不存在则添加注意,如果_id写成是id,则会把id当成key

 ps:db.students.save({"_id":"20180418","name":"张三","gender":1})

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

  参数query:可选,删除的文档的条件

  参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

  ps:只删除匹配到的第一条   db.students.remove({"name" : "gj"},{"justOne":true})

  全部删除: db.students.remove({})

关于max的示例

 ps:创建一个名为sub的定长集合,长度为5个字节,可容纳的文档数为3

  db.createCollection("sub",{"capped":true,size:5,max:3}) 这里当插入的文档数超过3时会自动替换前一个文档

比较运算符

  等于,默认是等于判断,没有运算符

  小于$lt  计算机术语里面是 less than,意思是小于,缩写是lt

  小于或等于$lte

  大于$gt   对应 greater than,意思是大于,缩写是gt ;

  大于或等于$gte

  不等于$ne  对应 Not equal to,意思是不等于,缩写ne;

  ps:查询课时大于或等于2的学科  db.sub.find({"count":{"$gte":2}})

   查找标题不是mongodb的学科   db.sub.find({'title':{'$ne':"mongodb"}})

 逻辑运算符

  查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接

  逻辑与:默认是逻辑与的关系,多个条件直接用逗号连接

    ps:查询课时大于或等于10,并且标题为web的学科  db.sub.find({"count":{"$gte":10},"title":"web"})

  逻辑或:使用$or 

    ps:查询课时大于10,或标题为web的学科 db.sub.find({"$or":[{"count":{"$gt":10}},{"title":"web"}]})

范围运算符--"$in":使用"$in","$nin" 判断是否在某个范围内

  ps:查询课时为8、14的学科  db.sub.find({"count":{"$in":[8,14]}})

   查询课时不为8、14的学科 db.sub.find({"count":{"$nin":[8,14]}})

Limit与Skip:

  db.集合名称.find().limit(NUMBER), 参数NUMBER表示要获取文档的条数, 如果没有指定参数或者0则显示集合中的所有文档

  方法limit():用于读取指定数量的文档 ps:  查询2条信息 db.sub.find({}).limit(2)

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

  db.集合名称.find().skip(NUMBER)   参数NUMBER表示跳过的记录条数,默认值为0

  ps:查询从第3条开始的学生信息 db.stu.find().skip(2)

  

limit()和skip()一起使用:

ps: 从第二条开始,并且只要三条  db.sub.find().skip(2).limit(3)

MongoDB与python交互:

创建客户端:

#无安全认证:
client = MongoClient('localhost', 27017)
client = MongoClient('mongodb://localhost:27017/数据库名称')
client = MongoClient('mongodb://localhost:27017/test1') #有安全认证:
client = MongoClient('mongodb://用户名:密码@localhost:27017/数据库名称')
client = MongoClient('mongodb://t1:123@localhost:27017/test1')

代码实现:

from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/test1")
#得到名字叫test1的数据库 test1 = client['test1'] #也可以写成 test1 = client.test1
#得到名字叫t1的集合 t1 = test1['t1'] #也可写成 t1 = test1.t1
#要插入的数据
s1 = {"name":"郭靖","age":18}
s = t1.insert_one(s1)

更新数据:

s = t1.update_one({"name":"郭靖"},{"$set":{"name":"黄蓉"}})

删除数据:

s1 = t1.delete_one({'name':'黄药师'})

查找数据:

s1 = t1.find_one({'name':'黄蓉'})
#查找所有数据 t1.find()

 

  

数据库之mongodb的更多相关文章

  1. Scrapy Item用法示例(保存item到MySQL数据库,MongoDB数据库,使用官方组件下载图片)

    需要学习的地方: 保存item到MySQL数据库,MongoDB数据库,下载图片 1.爬虫文件images.py # -*- coding: utf-8 -*- from scrapy import ...

  2. node.js操作数据库之MongoDB+mongoose篇

    前言 node.js的出现,使得用前端语法(javascript)开发后台服务成为可能,越来越多的前端因此因此接触后端,甚至转向全栈发展.后端开发少不了数据库的操作.MongoDB是一个基于分布式文件 ...

  3. NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具

    业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装  NoSQL Manager for MongoDB 可 ...

  4. NoSql非关系型数据库之MongoDB应用(三):MongoDB在项目中的初步应用

    业精于勤,荒于嬉:行成于思,毁于随. 我们可以结合相关的IDE做一个简单的增删改查了,实现MongoDB在项目中的初步应用. 前提是安装了MongoDB服务和MongoDB可视化工具,没有安装的可以点 ...

  5. NOSQL数据库之MongoDB

    一.NoSQL概述 如今,大多数的计算机系统(包括服务器.PC.移动设备等)都会产生庞大的数据量.其实,早在2012年的时候,全世界每天产生的数据量就达到了2.5EB(艾字节,​).这些数据有很大一部 ...

  6. 使用Tapdata一步搞定关系型数据库到MongoDB的战略迁移

      摘要:数据库作为最关键的基础设施,随着互联网时代的信息高速增长,关系型数据库因其高门槛.高成本以及扩展性差等原因导致的局限性逐渐浮出水面,如今更是面临诸多问题和挑战,Tapdata 专注新一代实时 ...

  7. NoSql数据库初探-mongoDB读操作

    MongoDB以文档的形式来存储数据,此结果类似于JSON键值对.文档类似于编程语言中将键和值关联起来的结构(比如:字典.Map.哈希表.关联数组).MongoDB文档是以BOSN文档的形式存在的.B ...

  8. NoSql数据库初探-mongoDB环境搭建

    NoSQL数据库一改关系型数据库的缺点,更容易的集成.分布式.无模式.故障恢复等特点,正在一步步餐食关系型数据库的市场,作为一个与时俱进的码农了解一下新技术是必须的,尤其是在读了<NoSql精粹 ...

  9. (转)印度建全球最大生物识别数据库,MongoDB安全受质疑

    受棱镜门影响,各界对Aadhar的质疑从是否将威胁人民隐私与安全,转而聚焦在 Aadhar 搜集.储存以及处理资料的方法,以及美国新创公司 MongoDB 在计划中扮演的角色. 泱泱大国印度一直以来都 ...

  10. 【MongoDB数据库】MongoDB 命令入门初探

    MongoDB是一款NoSql数据库,使用了"面向集合"(Collection-Oriented)原理,意思是数据被分组存储在数据集中,被称为一个集合(Collection).每一 ...

随机推荐

  1. 【iOS开发】在ARC项目中使用非ARC文件

    ARC的出现应该说是开发者的一大福利,苹果是推荐使用的,但是因为之前没有ARC机制,好多比较好的类库都是使用的非ARC,或是有些大牛还是不喜欢用ARC,封装的类也是非ARC的,想要在自己的ARC项目中 ...

  2. winform listbox 使用DrawMode使用OwnerDrawVarialbe或OwnerDrawFixed无水平滚动条

    因为需要使用DrawMode自行DrawItem,所以需要将DrawMode设置为OwnerDrawVarialbe或OwnerDrawFixed模式,代码如下: private void listB ...

  3. 3.CSS使用基础(2)

    目录 一.CSS 链接 二.CSS 列表样式(ul) 三.CSS Table(表格) 四.盒子模型 五.CSS Border(边框) 六.CSS 轮廓(outline)属性 七.CSS Margin( ...

  4. BackgroundWorker原理剖析

    BackgroundWorker类位于System.ComponentModel命名空间下,主要用来异步执行一个长时间的操作,然后,在完成事件中安全更新UI的控件属性.UI中的控件是不允许非创建该控件 ...

  5. docker的网络基础配置

    一.端口映射实现访问容器 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过-P或-p参数来指定端口映射.当使用-P标记时,Docker会随机映射一个49000~49900的端口至容器内部开放 ...

  6. Webapi通过报文获取post上来的数据

    public HttpResponseMessage Post(HttpRequestMessage req) { var content = req.Content.ReadAsStringAsyn ...

  7. 转:C# WinForm窗体及其控件的自适应

    一.说明 2012-11-30 曾经写过 <C# WinForm窗体及其控件自适应各种屏幕分辨率>  ,其中也讲解了控件自适应的原理.近期有网友说,装在panel里面的控件,没有效果? 这 ...

  8. OpenCV2马拉松第2圈——读写图片

    收入囊中 用imread读取图片 用nameWindow和imshow展示图片 cvtColor彩色图像灰度化 imwrite写图像 Luv色彩空间转换 初识API 图像读取接口 image = im ...

  9. 20165318 预备作业3 Linux安装及学习

    Linux安装及学习 一.VirtualBox和Ubuntu的安装 我安装的是VirtualBox 5.2.6和Ubuntu 16.04 LTS,安装过程按照老师博客中的步骤依次进行,出现了以下几个问 ...

  10. 1297. [SCOI2009]迷路【矩阵乘法】

    Description windy在有向图中迷路了. 该有向图有 N 个节点,windy从节点 0 出发,他必须恰好在 T 时刻到达节点 N-1. 现在给出该有向图,你能告诉windy总共有多少种不同 ...