文档章节

MongoDB和pymongo入门

好铁
 好铁
发布于 2016/04/15 17:25
字数 638
阅读 249
收藏 7

MongoDB

1. 概念

SQL 与 NoSQL(MongoDB)的对比

关系型数据库 MongoDB
数据库 数据库
表 Table 集合 Collection
行 Row/Tuple 文档 Document
列 Column 字段 Field
表 Join 内嵌文档 Embedded Documents
主键 Primary Key 主键 Primary Key(由 MongoDB 提供的默认 key_id)


2. 安装及启动服务

archlinux:


# pacman -S mongodb python-pymongo



使用systemd开启服务



# systemctl start mongodb



默认使用配置文件 /etc/mongodb.conf , 内容如下, 可以修改默认数据库路径 dbpath:



bind_ip = 127.0.0.1
quiet = true
dbpath = /var/lib/mongodb
logpath = /var/log/mongodb/mongod.log
logappend = true




或直接启动mongodb:


# mongod --dbpath /tmp/dbfile &




3.  创建及删除数据库

mongo 进入客户端后, 命令 use 会创建一个新的数据库,如果该数据库存在,则返回这个数据库


> use DATABASE_NAME



命令  db 检查当前选定的数据库


命令 show dbs 来检查数据库列表, 刚创建的数据库没有出现在列表中, 为了让数据库显示出来,至少应该插入一个文档 db.DATABASE_NAME.insert({'a':'abc'})

dropDatabase() 删除数据库


> use DATABASE_NAME
> db.dropDatabase()




4. 创建及删除集合

db.createCollection(name, options)



>use DATABASE_NAME
>db.createCollection("COLLECTION_NAME")



命令 show collections 查看创建的集合


或者不需要显式创建集合。当插入一些文档时,MongoDB 会自动创建集合


>db.COLLECTION_NAME.insert({"foo" : "bar"})



命令 db.COLLECTION_NAME.drop() 删除集合



5. 增删查改文档

>db.COLLECTION_NAME.insert(document)   // 插入

>db.COLLECTION_NAME.find()             // 查询
>db.COLLECTION_NAME.find().pretty()    // 格式化显示

>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA) // 更新
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})           // 替换

>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)  // 删除

更多查询:

>db.COLLECTION_NAME.find({}, {name: 1, _id: 0}); // 显示名为 name 的 field, 排除 _id 字段
>db.COLLECTION_NAME.find().sort({name: 1, rating: -1}).limit(5) // 按 name 升序, rating字段降序进行排序, 只显示前5条

>db.COLLECTION_NAME.count({num: {$gt: 50}})   //计数, 下同
>db.COLLECTION_NAME.find({num: {$gt: 50}}).count()





pymongo

1. 入门

导入模块并实例化一个client
>>> from pymongo import MongoClient
>>> client = MongoClient()
或指定主机和端口
>>> client = MongoClient('localhost', 27017)
>>> client = MongoClient('mongodb://localhost:27017/')  # mongodb格式

获得一个数据库:
>>> db = client.test_database
>>> db = client['test-database']   # 字典形式

获得一个集合:
>>> collection = db.test_collection
>>> collection = db['test-collection']
# 集合和数据库只有在被插入文档的情况下才被真正创建


pymongo使用字典表示文档:
>>> import datetime
>>> post{'author': 'Mike',
 'date': datetime.datetime(2016, 4, 15, 9, 9, 28, 367936),
 'tags': ['mongodb', 'python', 'pymongo'],
 'text': 'my first blog post'}

插入文档:
>>> posts = db.posts
>>> posts.insert_one(post)
>>> db.collection_names()  # 查看集合名
插入多个文档:
>>> new_posts = [{"author": "Mike",
...               "text": "Another post!",
...               "tags": ["bulk", "insert"],
...               "date": datetime.datetime(2009, 11, 12, 11, 14)},
...              {"author": "Eliot",
...               "title": "MongoDB is fun",
...               "text": "and pretty easy too!",
...               "date": datetime.datetime(2009, 11, 10, 10, 45)}]
>>> result = posts.insert_many(new_posts)
>>> result.inserted_ids
[ObjectId('...'), ObjectId('...')]


获得单个文档:
>>> posts.find_one()
>>> posts.find_one({"author": "Mike"})  # 指定元素

计数:
>>> posts.count()



参考:

https://wiki.archlinux.org/index.php/MongoDB

http://api.mongodb.org/python/current/

http://wiki.jikexueyuan.com/project/mongodb/mongodb-query-document.html

© 著作权归作者所有

好铁
粉丝 38
博文 266
码字总数 78672
作品 0
朝阳
程序员
私信 提问
Python3中PyMongo使用举例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengbingchun/article/details/89069165 MongoDB是一个基于分布式文件存储的开源数据库,由C++语言编写,与平...

fengbingchun
04/07
0
0
MongoDB 快速入门

对 MongoDb 文档数据库感兴趣,要安装认识下。 到官方下载 win 版 http://www.mongodb.org/display/DOCS/Downloads 目前最新稳定版是 1.2.4。解压到 f:/sofr/mongodb-win32-i386-1.2.4。 启动...

红薯
2010/03/18
3.2K
0
Python 数据库骚操作 -- MongoDB

前言 最近这几天准备介绍一下 Python 与三大数据库的使用,这是第一篇,首先来介绍 MongoDB 吧,这里介绍 MongoDB 的两款操作库,走起!! MongoDB GUI 工具 首先介绍一款 MongoDB 的 GUI 工...

Mr_zebra
2018/11/13
0
0
Python操作MongoDB - 极简教程

Python 连接 MongoDB 安装PyMongo模块 使用MongoClient建立连接 获取数据库 获取集合 上述任何命令都没有在MongoDB服务器上实际执行任何操作。当第一个文档插入集合时才创建集合和数据库。 ...

kangvcar
2017/11/02
0
2
MongoDB在Ubuntu10.04下的单机性能测试

MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它比纯noSQL数据库查询功能强悍,比关系数据库更面向集合。 测试的硬...

岭南六少
2011/08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
5
0
GIL 已经被杀死了么?

本文原创并首发于公众号【Python猫】,未经授权,请勿转载。 原文地址:https://mp.weixin.qq.com/s/8KvQemz0SWq2hw-2aBPv2Q 花下猫语: Python 中最广为人诟病的一点,大概就是它的 GIL 了。...

豌豆花下猫
昨天
5
0
git commit message form

commit message一般包括3部分:Header、Body、Footer。 <type>(<scope>):<subject>blank line<body>blank line<footer> header是必需的,body、footer可以省略。 header中type、subject......

ninjaFrog
昨天
5
0
聊聊Elasticsearch的CircuitBreakerService

序 本文主要研究一下Elasticsearch的CircuitBreakerService CircuitBreakerService elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/indices/breaker/CircuitBreakerService.ja......

go4it
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部