我如何使用Mongo $ index,以便查询不会使用任何索引

时间:2012-12-12 12:31:17

标签: mongodb nosql

这个问题有些奇怪,但我在当前的实施中碰到了它:

我想特权插入我的应用程序中的所有内容,我想到了命令$ hint也可以用来让mongo不使用索引。

这可能吗?考虑到$ hint应该做什么,这是一个合理的问题吗?

由于

2 个答案:

答案 0 :(得分:5)

我认为插入不会像你想象的那样工作。

insert会根据集合本身的索引数将其所需的字段编入btree。因此,对于特权插入,您必须销毁集合上的所有索引。

因此使用$natural命令提示将对读写顺序没有影响。更不用说$natural顺序是一个磁盘插入索引,只是一个你无法在查询中有效使用的索引,因为它会强制进行全表扫描。

然而,实际上并没有特权,因为维护btree是插入数据的一部分,所以没有办法通过索引来优先插入插件。

写入和读取锁定是两个完全不同的事情,所以我不确定你的问题是否有意义。

您是否更喜欢寻找原子锁以确保在读取之前更新或放入数据?

答案 1 :(得分:4)

To force the query optimizer to not use indexes(进行表扫描),使用:

  

db.collection.find()提示({$天然:1})。

不确定这是否达到了你想要的效果(优先考虑插入超过其他活动)。