MongoDB 是否提供查找或查询方法来根据任何字段值测试某个项目是否存在?我们只想检查是否存在,而不是返回该项目的完整内容。
由于您不需要计数,因此您应该确保查询在找到第一个匹配项后返回。自从计数性能不理想,这一点相当重要。以下查询应该可以完成该任务:
db.Collection.find({ /* criteria */}).limit(1).size();
注意find().count()
默认情况下not尊重limit
子句,因此可能会返回意外的结果(并且会尝试查找所有匹配项)。size()
or count(true)
将遵守限制标志。
如果你想走极端,你应该确保你的查询使用覆盖索引。覆盖索引仅访问索引,但它们要求您查询的字段已建立索引。一般来说,这应该可以做到,因为count()
显然不返回任何字段。尽管如此,覆盖索引有时需要相当详细的游标:
db.values.find({"value" : 3553}, {"_id": 0, "value" : 1}).limit(1).explain();
{
// ...
"cursor" : "BtreeCursor value_1",
"indexOnly" : true, // covered!
}
很遗憾,count()
不提供explain()
,所以值不值这个很难说。像往常一样,测量是比理论更好的伴侣,但理论至少可以让你避免更大的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)