这个问题有些奇怪,但我在当前的实施中碰到了它:
我想特权插入我的应用程序中的所有内容,我想到了命令$ hint也可以用来让mongo不使用索引。
这可能吗?考虑到$ hint应该做什么,这是一个合理的问题吗?
由于
答案 0 :(得分:5)
我认为插入不会像你想象的那样工作。
insert会根据集合本身的索引数将其所需的字段编入btree。因此,对于特权插入,您必须销毁集合上的所有索引。
因此使用$natural
命令提示将对读写顺序没有影响。更不用说$natural
顺序是一个磁盘插入索引,只是一个你无法在查询中有效使用的索引,因为它会强制进行全表扫描。
然而,实际上并没有特权,因为维护btree是插入数据的一部分,所以没有办法通过索引来优先插入插件。
写入和读取锁定是两个完全不同的事情,所以我不确定你的问题是否有意义。
您是否更喜欢寻找原子锁以确保在读取之前更新或放入数据?
答案 1 :(得分:4)
To force the query optimizer to not use indexes(进行表扫描),使用:
db.collection.find()提示({$天然:1})。
不确定这是否达到了你想要的效果(优先考虑插入超过其他活动)。