mongodb和pymongo创建数据库和基础操作

来源:互联网 发布:个人日程安排软件 编辑:程序博客网 时间:2024/06/08 16:15

1. MongoDB

下载地址:https://www.mongodb.com/download-center#community
MongoDB是一种介于关系型和非关系型中间的数据库。它是文档型数据库(一个文档包含多个键/值对),多个文档组成集合,多个集合组成数据库。一个MongoDB 实例可以承载多个数据库。这里集合的概念类似关系型数据库中的表。MongoDB的优势在于数据存储与交互非常灵活,采用类似JSON格式,能灵活地创建索引以及完成SQL能做的几乎所有查询。此外它还是一个支持分布式的数据库,能自动处理分片实现负载均衡,并且支持使用MapReduce进行复杂的聚合操作。


安装完MongoDB之后我们需要创建一个文件夹存放数据库

MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建。

打开cmd -> cd c:\data -> mkdir db  然后在创建log文件夹 mkdir log


然后可以启动MongoDB

cd C:\Program Files\MongoDB\Server\3.4\bin

mongod -dbpath C:\data\db

链接成功后新开一个cmd窗口,切换到bin目录下,键入mongo打开一个客户端


常用操作:

(1)查看所有数据库: show dbs

(2)创建数据库:use dbname (如果数据库不存在,则创建数据库,否则切换到指定数据库)

(3)插入数据:db.collection.insert({key:value})

(4)更新数据:db.collection.save({key:value}) 如果是已经存在的key则更新value,否则执行插入,insert对已经存在的不做操作

       db.collection.update({key_name : key},{value_name : value})

(5)删除:db.collection.remove()删除所有数据,db.collection.remove({key:value})删除指定数据,db.collection.drop()删除这个collection

(6)查找:db.collection.find({key:value}).pretty()返回所有,并且展示地好看点,db.collection.findOne()返回第一条, find里可以多个key查询,find({key1: value1, key2: value2})

其他常见操作: http://www.runoob.com/mongodb/mongodb-query.html


2. PyMongo

PyMongo提供了在python里操作MongoDB的工具,官方教程:http://api.mongodb.com/python/current/tutorial.html


(1)首先创建一个mongoclient,默认是本地端口

import pymongoclient = pymongo.MongoClient() 

如果是连其他服务器端口

client = pymongo.MongoClient('192.xxx.x.xxx')  # 创建一个连接  client['test'].authenticate('username', 'password')

(2)创建数据库,类似字典引用

db = client['my_database']


(3)创建collection

collection = db['my_collection']
注意MongoDB是惰性的,即在插入第一条数据之前,数据库和collection都不会真的生成

(4)插入一条文档,文档在MongoDB中的存储格式是json,在pymongo中我们一般传入字典。


dic = {'name':'serena',"id":1532}collection.insert_one(dic)

(5)插入多条文档,可以传入list of dict, 即一个字典的列表,每个元素是一条记录,然后用insert_many()

list_of_records = [{'name': 'amy', 'id': 1798},{'name': 'bob', 'id': 1631}]collection.insert_many(list_of_records)


(6)查询记录,find_one(), find()


打印所有记录

for record in collection.find():    pprint.pprint(record)


查询一条

collection.find_one({'name': 'amy'})


查询所有满足条件的

collection.find({'name': 'amy'})


(7)count

collection.count()

collection.find().count()





原创粉丝点击