文档章节

mongodb基础

acutesun
 acutesun
发布于 2017/07/26 11:15
字数 602
阅读 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

没有更多内容

加载失败,请刷新页面

加载更多

企业级 SpringBoot教程(三)SpringBoot用JdbcTemplates访问Mysql

准备工作 jdk 1.8 maven 3.0 idea mysql 初始化mysql: -- create table `account`DROP TABLE `account` IF EXISTSCREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT,......

itcloud
28分钟前
1
0
事务的作用

1. 什么是事务,为什么使用事务? 一、概念: 1.数据库事务: 数据库事务通常指对数据库进行读或写的一个操作序列。 它的存在包含有以下两个目的: 1、为数据库操作提供了一个从失败中恢复到正常...

gaomq
30分钟前
1
0
Web工程师以太坊入门

我经常构建使用以太坊的Web应用程序,我理所当然地认为每天都使用的是神奇的工具集。我们的生态系统正在迅速发展,我认为很多新人都感到不知所措。以太坊是一项了不起的技术,但它也是新生的...

geek12345
32分钟前
0
0
新蠕虫出现:以Linux和Windows为目标

正如Unit 42研究团队所详述的那样,名为Xbash的新恶意软件系列与Iron Group有关,Iron Group是一个以前知道可以执行勒索软件攻击的威胁行为者,显然已经转向更复杂的攻击媒介。 据观察,Xba...

linux-tao
35分钟前
0
0
Mask 动画

前言:很多动效都是多种动画的组合,有时候你可能只是需要其中某个动画,但面对庞杂的代码库或是教程,你可能比较困惑,本系列将复杂动效中不常见的动画效果拆解出来便于学习,授人以鱼不如授...

walking_yxf
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部