专栏首页新码农博客Pymongo index索引相关操作总结

抱歉,你查看的文章已删除

Pymongo index索引相关操作总结

简单总结一下pymongo中与index操作相关一些函数, 常用的有:

  • create_index
  • drop_index
  • index_information

其中最主要的是create_index, 可以用它来为mongo的collection建立索引。

以下操作一些简单的例子,代码如下:

import pymongo as pm
client = pm.MongoClient('mongodb://user:password@127.0.0.1:27017, ssl=True, ssl_ca_certs='/tmp/mongo_local.pem')
db = client['my_db']
collection = db['my_collection']
#list all index related methods
print([x for x in dir(collection]) if 'index' in x)
#['Collection__create_index', 'create_index','create_indexes','drop_index','drop_indexes',\ # 'ensure_index','index_information','list_indexes','reindex']
#create a index on attr. x
collection.create_index([('x',1)], unique = True, background = True)
#get more help using help method
help(collection.create_index)
#show index information
collection.index_infomation()
#{ 
# '_id_': {'key' ['_id',1)], 'ns':'my_db.my_collection', 'v':1},
# 'x_1' : { 'unique':True, 'key': [('x',1)],  'ns':'my_db.my_collection', 'v':1}
#}
#drop an index by index specifier
collection.drop_index([('x',1)])
#drop an index by index name
#collection.drop_index('x_1')
#WARN: if an index is create with option name specified, it can only be dropped by name
collection.create_index([('x',1)], name = 'idx_x')
collection.drop_index('idx_x')
create_index函数也可以使用多个字段创建索引,例如
collection.create_index([('x',1),('y',1)])

语法中(‘x’,1), x 值为要创建的索引字段名,1 为指定按升序创建索引,可以用pymongo.ASCENDING代替。如果你想按降序来创建索引,则指定为 -1 或 pymongo.DESCENDING.

在使用create_index()创建索引时,也可指定特定的参数(options),常用可选参数如下:

参数名

类型

描述

background

Boolean

建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 “background” 可选参数。 “background” 默认值为False。

unique

Boolean

建立的索引是否唯一。指定为True来创建唯一索引。默认值为False. 默认情况下,MongoDB在创建集合时会生成唯一索引字段_id。

name

string

索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。例如create_index([(‘x’,1)]在不指定name时会生成默认的索引名称 ‘x_1’

expireAfterSeconds

integer

指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。需要在值为日期或包含日期值的数组的字段的创建。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Scrapy:重写start_requests方法

    有时scrapy默认的start_requests无法满足我们的需求,例如分页爬取,那就要对它进行重写,添加更多操作。

    新码农
  • Scrapy:多个item时指定pipeline

    有时,为了数据的干净清爽,我们可以定义多个item,不同的item存储不同的数据,避免数据污染。但是在pipeline对item进行操作的时候就要加上判断。

    新码农
  • 【AlexeyAB DarkNet框架解析】七,YOLOV1损失函数代码详解(detection_layer.c)

    灵魂拷问,你真的懂YOLOV1的损失函数吗?进一步,懂了损失函数,你清楚它的反向求导过程吗?为了解决这俩问题,本文就结合DarkNet中的YOLOV1的损失函数...

    BBuf
  • Apache2为什么会自动加载index.php

    我直接输入域名后,Apache2自动加载了对应目录下的index.php, 这是怎么做到的?

    Jerry Wang
  • 在thinkphp5.0路径中实现去除index.php的方式

    昨天安装环境后发现,路径“/index/index/index”无法访问,经查验存在index模块,index控制器与index操作。

    砸漏
  • nginx 配置目录转发

    server { listen 80; autoindex off; server_name image.imooc.com; ...

    Dar_Alpha
  • 封装Python列表实现多下标访问

    class MyArray(object): def __init__(self, values): #values can be of...

    Python小屋屋主
  • 循环中的异步&&循环中的闭包

    foo函数下的index输出5,全局下的index不存在 现在我们把var 换为let

    陌上寒
  • 浅析一个sql server数据库事务死锁问题

    一个学生管理系统,数据库是sql server,有一个Web API用于创建student。student对象的表结构如下:

    Bruce Li

扫码关注云+社区

领取腾讯云代金券