博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB和pymongo入门
阅读量:6888 次
发布时间:2019-06-27

本文共 2948 字,大约阅读时间需要 9 分钟。

  hot3.png

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.1quiet = truedbpath = /var/lib/mongodblogpath = /var/log/mongodb/mongod.loglogappend = 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://my.oschina.net/sukai/blog/660810

你可能感兴趣的文章
CAS实现SSO单点登录原理
查看>>
混合模型和EM---K均值聚类
查看>>
装饰模式与代理模式
查看>>
lucene使用与优化
查看>>
《磨砺书店》app项目开发技术点总结(磨砺营马剑威Android)
查看>>
好文章!7个软件开发原则 (转)
查看>>
ecshop Incorrect database name
查看>>
【译文】为何我热爱Node.js: Promises, Express, 和CLI?
查看>>
java之可变参数
查看>>
Servlet
查看>>
Android App闪退之后重启问题
查看>>
PHP 完善的 Error / Exception 的捕获与处理
查看>>
php isset 导致的问题
查看>>
solr4.10.2 + tomcat6.0.44搭建
查看>>
Centos6克隆后网卡简单配置(图形界面)
查看>>
用Spring Boot颠覆Java应用开发
查看>>
总结最近常用的一些Java技能
查看>>
flask-wtf扩展中FormField报错:'csrf_token': ['CSRF token missing']
查看>>
技术迷思
查看>>
好文转载—做到更好之前,你需要做得好
查看>>