我使用的是MongoDB 2.6.8。根据{{3}},这两个查询的行为应该相同:
> db.collection.find({}).maxTimeMS(100)
> db.collection.find({}, {$maxTimeMS: 100})
第一个查询完全符合我的要求,但第二个查询限制只返回文档的对象ID。我尝试将$ maxTimeMS增加到100000000并且行为没有变化。
为什么我会为这两个命令得到不同的结果?
答案 0 :(得分:1)
db.collection.find({}, {$maxTimeMS: 100})
仅返回每个对象的_id
的原因是因为mongoDB将查询的{$maxTimeMS: 100}
部分解释为projection。
因此,它认为您要查看所有文档,并希望查看字段_id
和字段$maxTimeMS
。当然,您的所有文档都没有$maxTimeMS
字段,因此它们只显示_id
。
在没有快捷方式的情况下执行所需查询的正确方法是:
db.collection.find({ $query: {}, $maxTimeMS: 100 })