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

Dra*_*nar 0 mongodb nosql

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

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

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

谢谢

Thi*_*ilo 6

要强制查询优化器不使用索引(执行表扫描),请使用:

db.collection.find().hint({$natural:1})

不过,不确定这是否能达到您想要的效果(将插入优先于其他活动)。


Sam*_*aye 5

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

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

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

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

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

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