python数据库优化方法_python-MongoDB优化FindAndModify或查找排序

在处理大量数据的MongoDB集合时,优化查询性能至关重要。文章讨论了如何优化使用pymongo的查询,特别是针对find_and_modify操作。问题在于尽管创建了复合索引(a 1, b 1, c 1, d -1),但在包含d的查询中,MongoDB并未充分利用该索引。通过解释查询输出,发现存在全表扫描。解决方案提到可以使用`hint()`方法强制查询使用特定的复合索引,以提高查询效率。" 108479561,9562508,寻找数组中缺失的最小正整数,"['算法', '数组操作', '问题解决', '数学', '编程']
摘要由CSDN通过智能技术生成

运行MongoDB,我正在尝试将优先级为(d)的三列键查找(a,b,c)排队.我有一个查询(pymongo语法):

collection.find({'a':'foo','b':'bar','c':'baz'}, sort = [('d', -1)] )

在运行复合索引(a 1,b 1,c 1,d-1)的情况下,explain显示全表扫描和BasicCursor.

在d上有一个索引时,说明显示仅使用d索引.

对于大表,我真正想要的是使用复合索引.我该如何进行这项工作?

INDEX_INFORMATION:

{u’id’:{u’key’:[(u’_id’,1)],u’v’:1},

u’color_1_level_1_in_progress_1_Ranking_-1’:{u’key’:[(u’color’,

1),

(u’level’,1),

(u’in_progress’,1),

(u’Ranking’,-1)],

u’v’:1}}

EXPLAIN ON A FIND+SORT QUERY

db.coll.find({'level' : {'$in' : [0,1,2]}, 'in_progress' : 0, 'color' : {'$in' : ['Red', 'Blue', 'Green]} }, sort = [('Ranking', -1)] ).explain()

OUTPUT ON EXPLAIN

Operati

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值