文档章节

mongodb基础

acutesun
 acutesun
发布于 2017/07/26 11:15
字数 602
阅读 0
收藏 0
点赞 0
评论 0

mongodb

    mongodb 属于NoSql 数据库,与关系型数据库大不同,对比mysql进行学习

SQL MONGO 说明
database db 数据库
table collection 数据库表/ 集合
row document 数据行/ 文档
column field 数据字段/ 域
index index 索引
primary key primary key 主键,mongo 自动将_id 字段设置为主键

 

MongoDB 常见数据类型

创建删除(数据库)

MongoDb 中的collection 和 数据库都是惰性创建的,在插入第一个文档后,才会创建

use python (如果不存在,则创建。 )

show dbs 

db.python.insert({'url': 'www.google.com'})

db.dropDatabase()

 

增山改查

增加

MongoDB 使用insert() 或 save() 方法插入数据

db.COLLECTION_NAME.insert()

> db.python.insert({title: 'python', likes: 100})
WriteResult({ "nInserted" : 1 })

 

查找

db.COLLECTION_NAME.find()

db.COLLECTION_NAME.find().pretty()

条件语句和操作符

find()方法可以传入多个键,实现and条件

db. COLLECTION_NAME.find({key1:value1, key2:value2}).pretty()

> db.python.find({'likes':{$gte:100}, 'title':'python'}).pretty()
{
	"_id" : ObjectId("5977eee9176609dfd3e4f6eb"),
	"title" : "python",
	"likes" : 100
}

实现or条件

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

> db.python.find({$or:[{'likes':{$gte:100}},{'title': 'python'}]})
{ "_id" : ObjectId("5977eee9176609dfd3e4f6eb"), "title" : "python", "likes" : 100 }

更新文档

update

db.collection.update(
        query,
        update,
        {
            upsert: boolean
            multi: boolean
            writeConcern: document
        }
)

  • query:  update 查询的条件
  • update: update的对象和一些更新操作符
  • upsert: 如果不存在update的记录,true插入,默认false
  • multi: 默认false, 更新第一条记录,true更新符合条件的多条记录
  • writeConcern:      抛出异常级别
> db.python.update({'title': 'python'}, {$set: {'title': 'python爬虫'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

save

通过传入的文档替换已有的文档

db.collection.save(

    document,

    {

        writeConcern: document

    }

)

> db.python.save({
... 'title': 'monogodb',
... 'likes': 100
... })
WriteResult({ "nInserted" : 1 })

 

删除

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

  • query 删除条件
  • justOne  可选,如果设置为True,删除一个文档
> db.python.remove({'likes':{$gte:100}})

 

python操作MongoDB

pip install pymongo

建立连接

常见的三种形式

  • client=pymongo.MongoClient()
  • client=pymongo.MongoClient(’localhost‘,27017)
  • client=pymongo.MongoClient(’mongodb://localhost:27017/‘)

获取数据库

db = client.pySpider

db = client['pySpider']

获取集合(表)

collection = db.python

collection = db['python']

 

增删改查

增加

>>> book = {'author':'Tom', 'text': 'hello world'}
>>> collection = db.python
>>> book_id = collection.insert(book)
>>> book_id
ObjectId('597806dde9856319a976ca6a')

批量插入

>>> books = [{"author": "Mike",
... "text": "My first book!",
... "tags": ["爬虫", "python", "网络"],
... "date": datetime.datetime.utcnow()
... },{"author": "qiye",
... "text": "My sec book!",
... "tags": ["hack", "python", "渗透"],
... "date": datetime.datetime.utcnow()
... }]
>>> books_id = collection.insert(books)
>>> books_id
[ObjectId('5978076ee9856319a976ca6b'), ObjectId('5978076ee9856319a976ca6c')]

查询

find_one() 没有匹配返回None

>>> collection.find_one({'author': 'Mike'})
{'text': 'My first book!', 'author': 'Mike', 'date': datetime.datetime(2017, 7, 26, 3, 7, 5, 111000), '_id': ObjectId('5978076ee9856319a976ca6b'), 'tags': ['爬虫', 'python', '网络']}

多条查询

也可以传入限制查询条件

>>> for book in collection.find():
...     print(book)

查询符合条件的文档数量

>>> collection.find().count()
3

 

修改

>>> collection.update({'author':'Tom'}, {"$set":{"text": "python book"}})
{'ok': 1, 'nModified': 1, 'updatedExisting': True, 'n': 1}

 

删除

>>> collection.remove({"author":"Tom"})
{'ok': 1, 'n': 1}

 

© 著作权归作者所有

共有 人打赏支持
acutesun
粉丝 0
博文 71
码字总数 83152
作品 0
程序员
腾讯自研 MongoDB 内核 - CMONGO

CMONGO 是腾讯 TEG 基础架构部在开源 MongoDB 源码的基础上进行了一系列优化的内核版本,目前包括腾讯云 MongoDB 和公司内部很多业务的 MongoDB 服务(如:ckv 冷数据,微信账单等)都在使用...

匿名
06/20
0
0
大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

加米谷数据分析挖掘课程明细,从理论到云端实操环境到项目实战,手把手教您从0掌握数据分析与挖掘技术,带您走进数据时代。 第一阶段(python基础) python入门:1、Python版本特性介绍2、P...

加米谷大数据
04/17
0
0
NoSQL数据库 -- MongoDB

终于下定决心在某东购买了《python核心编程(二)》和《鸟哥linux,基础 (三)》。感觉学习linux最开始还是在虚拟机里面比较好,所以安装了VirtualBox,并下载了Cent OS 7. 安装完Cent OS发现...

明天以后
2014/09/12
0
0
MongoDB集群部署(副本集模式)

一、需求背景 1、现状描述 (1)、针对近期出现的mongodb未授权的安全问题,导致mongodb数据会被非法访问。应安全平台部的要求,需要对所有mongodb进行鉴权设置,目前活动侧总共有4台,用于某X...

workming
06/29
0
0
Spring+Mongodb实战(持续更新中...)

本人文笔很烂请见谅,欢迎吐槽和各种拍砖!分享快乐! 1.准备工作 Spring Data MongoDB spring-data-mongodb是Spring对Monodb进行封装的Spring-Data项目的分支。点击上面的链接获取最新版。 ...

lee5hx
2014/03/29
0
2
Docker使用supervisor启动MongoDB

Docker的学习中不断的进行完善、不断的学习,把一些原有的方法进行优化。 镜像下载地址: 旧方案地址:如有不成熟没有上传 新方案地址:https://github.com/aarongo/centos-mongodb-superviso...

aarongo
2014/11/26
0
0
JS服务端系列-nodejs+express+ejs+mongodb的数据显示

1.我们下载好mongodb数据库,这个程序我放在nodejs的目录下了, 我的nodejs是安装在d: nodejs目录下,看图可以看到我的存放位置,这个随便放置 2.打开cmd窗口,转到mongodb的bin目录下, 执行...

透笔度
2015/08/05
0
0
MongoDB索引类型-基础索引、复合索引、文档索引、唯一索引

与关系型数据库一样,合理的使用索引可以大幅提高MongoDB的查询效率,本文介绍基础索引、复合索引、文档索引等几种常用索引的使用。 基础索引与复合索引 1.1 基础索引 1.2 组合索引 文档索引...

Airship
06/01
0
0
Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一)

Asp.Net Core Web Api图片上传及MongoDB存储实例教程(一) 图片或者文件上传相信大家在开发中应该都会用到吧,有的时候还要对图片生成缩略图。那么如何在Asp.Net Core Web Api实现图片上传存...

依乐祝
07/11
0
0
8天学通MongoDB——第一天 基础入门

关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”。 一: 下载 上M...

BobbyLou
2015/08/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zk实战--rpc框架集群化

在看此篇内容时需要浏览下面内容 netty实战--手写rpc框架 前文功能简介以及功能扩充 利用netty来实现一个点对点的rpc调用。客户端和服务端都是靠手写地址进行socket同学的,无法1对多,也无法...

xpbob
6分钟前
4
0
springboot 发送邮件

获取授权码 添加配置 # 账号和密码spring.mail.username=aaa@qq.comspring.mail.password=bbb# 服务器地址spring.mail.host=smtp.qq.comspring.mail.properties.mail.smtp.ssl.en...

阿豪boy
7分钟前
0
0
如何使用GNU Ring?

文章名:如何使用GNU Ring? 作者:冰焰火灵X 1079092922@qq.com 文章许可:CC BY-SA 4.0 ##1. 安装 下载GNU Ring 点击左边选择你的系统版本(这里以 GNU/Linux 为例,我使用的是Mint 18.3)...

ICE冰焰火灵X
10分钟前
1
0
深入理解springMVC

什么是spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而...

Java填坑之路
15分钟前
0
0
《射雕英雄传》书摘

1. 我虽是个飘泊江湖的贫家女子,可不是低三下四、不知自爱之人。你如真心爱我,须当敬我重我。我此生决无别念,就是钢刀架颈,也决意跟定了你。将来……将来如有洞房花烛之日,自然……自能...

k91191
26分钟前
0
0
解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件

最近项目中发现了一个bug,具体表现为选中模态框上datepicker组件上的日期时,会触发模态框的关闭事件,导致数据编辑无法正常进行。网上搜索了下,解决方法如下: $('.datepicker').on('hid...

Funcy1122
29分钟前
0
0
Redis分布式锁的正确实现方式

前言 分布式锁一般有三种实现方式: 1.数据库乐观锁 2.基于Redis的分布式锁; 3.基于Zookeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis...

大海201506
今天
0
0
ClassNotFoundException: javax.el.ELManager

这个是因为tomcat7中的el-api2.2,有些版本太低,建议升级tomcat到8.0,利用el-api3.0就会解决这个问题。

无语年华
今天
0
0
Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
今天
1
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部