mongodb
web
pymongo
连接
>>> from pymongo import MongoClient>>> client = MongoClient()>>> client = MongoClient('localhost', 27017)>>> client = MongoClient('mongodb://localhost:27017/')
获得实例
db = client.test_databasedb = client['test-database']collection = db.test_collectioncollection = db['test-collection']
>>> import datetime>>> post = {"author": "Mike",... "text": "My first blog post!",... "tags": ["mongodb", "python", "pymongo"],... "date": datetime.datetime.utcnow()}>>> posts = db.posts>>> post_id = posts.insert_one(post).inserted_id>>> post_idObjectId('...')
参考
PyMongo 3.4.0 documentation
数据库层次
- 文档,键值对的有序集
- 集合,文档集
- 数据库,由集合组成
全局
use DATABASE // 进入数据库无则创建db.dropDatabase() // 删除当前数据库db.col.drop() // 删除集合coldb // 显示当前的数据库show dbs // 显示所有数据库show collections
查询
条件查询
db.col.find({key1:value1, key2:value2}) // and条件db.col.find({$or: [{key1: value1}, {key2:value2}]}) // or条件# 条件操作符(>) 大于 - $gt(<) 小于 - $lt(>=) 大于等于 - $gte(<= ) 小于等于 - $lte# 例db.person.find({"age" : {$gt : 20}}) // 找到年龄大于20岁的人db.col.find({"title" : {$type : 2}}) // 指定类型
结果集修饰
db.col.find().pedb.col.find().limit(NUMBER)db.col.find().limit(NUMBER).skip(NUMBER)db.col.find().sort({KEY:1}) // 1为升序,-1为降序
插入
db.col.insert()db.col.batchInsert() // 批量插入
更新
db.col.update( <query>, // 查询条件 <update>, // 更新 { upsert: <boolean>, // 不存在时是否插入,默认为false multi: <boolean>, // 是否更新多条,默认为false writeConcern: <document> // 异常级别 })
删除
db.col.drop() // 清空集合db.col.remove() // 清空集合db.col.remove( <query>, { justOne: <boolean>, writeConcern: <document> })
索引
db.col.ensureIndex({KEY:1}, {param: type}) // 创建索引, 可指定参数
| Parameter | Type | Description |
| background | Boolean | 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background"
可选参数。 "background" 默认值为false。 |
| unique | Boolean | 建立的索引是否唯一。指定为true创建唯一索引。默认值为false. |
| name | string | 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。 |
| dropDups | Boolean | 在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false. |
| sparse | Boolean | 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false. |
| expireAfterSeconds | integer | 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。 |
| v | index version | 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。 |
| weights | document | 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。 |
| default_language | string | 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语 |
| language_override | string | 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language. |
聚合
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
参数说明
| 表达式 | 描述 | 实例 |
| $sum | 计算总和。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) |
| $avg | 计算平均值 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}]) |
| $min | 获取集合中所有文档对应值得最小值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}]) |
| $max | 获取集合中所有文档对应值得最大值。 | db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}]) |
| $push | 在结果文档中插入值到一个数组中。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}]) |
| $addToSet | 在结果文档中插入值到一个数组中,但不创建副本。 | db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}]) |
| $first | 根据资源文档的排序获取第一个文档数据。 | db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
| $last | 根据资源文档的排序获取最后一个文档数据 | db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}]) |
数据类型
| 类型 | 数字 | 备注 |
|---|
| Double | 1 | |
| String | 2 | |
| Object | 3 | |
| Array | 4 | |
| Binarydata | 5 | |
| Undefined | 6 | 已废弃。 |
| Objectid | 7 | |
| Boolean | 8 | |
| Date | 9 | |
| Null | 10 | |
| RegularExpression | 11 | |
| js | 13 | |
| Symbol | 14 | |
| js(withscope) | 15 | |
| 32-bitinteger | 16 | |
| Timestamp | 17 | |
| 64-bitinteger | 18 | |
| Minkey | 255 | Querywith-1. |
| Maxkey | 127 | |
参考
菜鸟教程