[关闭]
@nemos 2017-05-06T02:45:09.000000Z 字数 3078 阅读 781

mongodb

web


pymongo

连接

  1. >>> from pymongo import MongoClient
  2. >>> client = MongoClient()
  3. >>> client = MongoClient('localhost', 27017)
  4. >>> client = MongoClient('mongodb://localhost:27017/')

获得实例

  1. db = client.test_database
  2. db = client['test-database']
  3. collection = db.test_collection
  4. collection = db['test-collection']
  1. >>> import datetime
  2. >>> post = {"author": "Mike",
  3. ... "text": "My first blog post!",
  4. ... "tags": ["mongodb", "python", "pymongo"],
  5. ... "date": datetime.datetime.utcnow()}
  6. >>> posts = db.posts
  7. >>> post_id = posts.insert_one(post).inserted_id
  8. >>> post_id
  9. ObjectId('...')

参考

PyMongo 3.4.0 documentation

数据库层次

  1. 文档,键值对的有序集
  2. 集合,文档集
  3. 数据库,由集合组成

全局

  1. use DATABASE // 进入数据库无则创建
  2. db.dropDatabase() // 删除当前数据库
  3. db.col.drop() // 删除集合col
  4. db // 显示当前的数据库
  5. show dbs // 显示所有数据库
  6. show collections

查询

条件查询

  1. db.col.find({key1:value1, key2:value2}) // and条件
  2. db.col.find({$or: [{key1: value1}, {key2:value2}]}) // or条件
  3. # 条件操作符
  4. (>) 大于 - $gt
  5. (<) 小于 - $lt
  6. (>=) 大于等于 - $gte
  7. (<= ) 小于等于 - $lte
  8. #
  9. db.person.find({"age" : {$gt : 20}}) // 找到年龄大于20岁的人
  10. db.col.find({"title" : {$type : 2}}) // 指定类型

结果集修饰

  1. db.col.find().pe
  2. db.col.find().limit(NUMBER)
  3. db.col.find().limit(NUMBER).skip(NUMBER)
  4. db.col.find().sort({KEY:1}) // 1为升序,-1为降序

插入

  1. db.col.insert()
  2. db.col.batchInsert() // 批量插入

更新

  1. db.col.update(
  2. <query>, // 查询条件
  3. <update>, // 更新
  4. {
  5. upsert: <boolean>, // 不存在时是否插入,默认为false
  6. multi: <boolean>, // 是否更新多条,默认为false
  7. writeConcern: <document> // 异常级别
  8. }
  9. )

删除

  1. db.col.drop() // 清空集合
  2. db.col.remove() // 清空集合
  3. db.col.remove(
  4. <query>,
  5. {
  6. justOne: <boolean>,
  7. writeConcern: <document>
  8. }
  9. )

索引

  1. db.col.ensureIndex({KEY:1}, {param: type}) // 创建索引, 可指定参数
ParameterTypeDescription
backgroundBoolean建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false
uniqueBoolean建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
namestring索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDupsBoolean在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparseBoolean对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSecondsinteger指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
vindex version索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weightsdocument索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_languagestring对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_overridestring对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.

聚合

  1. 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"}}}])

数据类型

类型数字备注
Double1 
String2 
Object3 
Array4 
Binarydata5 
Undefined6已废弃。
Objectid7 
Boolean8 
Date9 
Null10 
RegularExpression11 
js13 
Symbol14 
js(withscope)15 
32-bitinteger16 
Timestamp17 
64-bitinteger18 
Minkey255Querywith-1.
Maxkey127 

参考

菜鸟教程

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注