文档章节

mongodb基础

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

 

© 著作权归作者所有

上一篇: phantomjs使用
下一篇: sqlite3 的使用
acutesun
粉丝 0
博文 71
码字总数 83152
作品 0
程序员
私信 提问
Oracle 的 NoSQL 恶梦 MongoDB

Oracle的NoSQL恶梦MongoDB (暨MongoDB发布2.6版本之际) 这次发布描绘出了一个极具前景的公司或将引领未来超过十年的创新。 By Jack Clark, 8 Apr 2014 翻译:无若 快速崛起的数据库MongoDB...

溪边九节
2014/04/09
10.6K
40
腾讯自研 MongoDB 内核 - CMONGO

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

匿名
2018/06/20
1K
0
MongoDB安全事件的防范与反思

此文已由作者温正湖授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 近段时间来,全球范围内数以万计的MongoDB实例被攻击,作为旨在为用户提供最优MongoDB云服务的...

网易云
2018/10/19
0
0
NoSQL数据库 -- MongoDB

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

明天以后
2014/09/12
354
0
大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

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

加米谷大数据
2018/04/17
25
0

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部