mongodb和pymongo模块
最近在写一个爬虫,使用的是MongoDB数据库,总结和简单记录下使用的方法。
- MongoDB 是一个基于分布式文件存储的数据库。
- 由 C++ 语言编写。
- 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
- MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
1.创建、查看、删除数据库
使用use来创建(当数据库不存在),若存在就选择该库
|
|
如果你想查看所有数据库,可以使用 show dbs 命令:
|
|
删除了数据库 xiwind
|
|
2.创建、查询、删除集合
在 test 数据库中创建 col 集合
|
|
查看已有集合,可以使用 show collections 命令
|
|
删除集合col
|
|
3.文档插入、删除、更新、查询操作
在col集合中插入文档
|
|
在col集合中查询文档
- find()查询所有,可以加条件
- find_one()只返回一个结果
- pretty()以易读的方式来读取数据123456789101112131415> db.col.find(){ "_id" : ObjectId("56064886ade2f21f36b03134"), "title" : "MongoDB", "description" : "MongoDB 是一个 Nosql 数据库", "url" : "http://xiwind.com", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100 }> db.col.find().pretty(){"_id" : ObjectId("56063f17ade2f21f36b03133"),"title" : "MongoDB","description" : "MongoDB 是一个 Nosql 数据库","url" : "http://xiwind.com","tags" : ["mongodb","database","NoSQL"],"likes" : 100}
条件查询表达式:
操作 | 格式 | 范例 |
---|---|---|
等于 | {key:value} | db.col.find({“title” : “MongoDB”}).pretty() |
小于 | {key:{$lt:value}} | db.col.find({“likes”:{$lt:50}}).pretty() |
小于或等于 | {<key>:{$lte:<value>}} | db.col.find({“likes”:{$lte:50}}).pretty() |
大于 | {key:{$gt:value}} | db.col.find({“likes”:{$gt:50}}).pretty() |
大于或等于 | {key:{$gte:value}} | db.col.find({“likes”:{$gte:50}}).pretty() |
不等于 | {key:{$ne:value}} | db.col.find({“likes”:{$ne:50}}).pretty() |
与 | {key1:value1, key2:value2} | db.col.find({“title”:”MongoDB”,”likes”:100}).pretty |
或 | {$or:[{key1: value1}, {key2:value2}]} | db.col.find(\$or:[{“title”:”MongoDB”, “likes”:100}]).pretty |
正则 | {key:{$regex:regex}} | db.col.find({“title”:{\$regex:”^M.*”}}).pretty |
在col集合中更新文档
更新指定文档内容:
|
|
传入的文档替换已有文档:
|
|
在col集合中删除文档
|
|
pymongo 模块的使用
连接mongodb的数据库
|
|
两种指定集合方式
|
|
插入数据
|
|
查询数据
|
|
符号 | 含义 | 范例 | 示例含义 |
---|---|---|---|
$regex | 匹配正则 | {‘name’: {‘$regex’: ‘^M.*’}} | name以M开头 |
$exists | 属性是否存在 | {‘name’: {‘$exists’: True}} | name属性存在 |
$type | 类型判断 | {‘age’: {‘$type’: ‘int’}} | age的类型为int |
$mod | 数字模操作 | {‘age’: {‘$mod’: [5, 0]}} | 年龄模5余0 |
$text | 文本查询 | {‘$text’: {‘$search’: ‘Mike’}} | text类型的属性中包含Mike字符串 |
$where | 高级条件查询 | {‘$where’: ‘obj.fans_count == obj.follows_count’} | 自身粉丝数等于关注数 |
计数
|
|
排序
|
|
偏移
|
|
更新
|
|
删除
|
|