mongodb - 如何查询 MongoDB 以测试项目是否存在?

MongoDB 是否提供查找或查询方法来根据任何字段值测试项目是否存在?我们只想检查是否存在,而不是返回项目的全部内容。

最佳答案

由于您不需要计数,因此您应该确保查询将在找到第一个匹配项后返回。由于count performance is not ideal ,这是相当重要的。以下查询应该完成:

db.Collection.find({ /* criteria */}).limit(1).size();

注意 find().count() 默认情况下 not 遵守 limit 子句,因此可能会返回意外结果(并且会尝试查找所有匹配项)。 size()count(true) 将遵守限制标志。

如果你想走极端,你应该确保你的查询使用 covered indexes .覆盖索引仅访问索引,但它们要求您查询的字段已编入索引。一般来说,应该这样做,因为 count() 显然不返回任何字段。不过,覆盖索引有时需要相当冗长的游标:

db.values.find({"value" : 3553}, {"_id": 0, "value" : 1}).limit(1).explain();

{
  // ...
  "cursor" : "BtreeCursor value_1",
  "indexOnly" : true,  // covered!
}

很遗憾,count() 不提供explain(),所以值得不值得一说。像往常一样,测量是比理论更好的伴侣,但理论至少可以让你摆脱更大的问题。

https://stackoverflow.com/questions/8389811/

相关文章:

sql - 为什么 MongoDB 比 SQL DB 快得多的任何详细和具体原因?

MongoDB 查询帮助 - 查询子对象中任何键的值

mongodb - MongoDB 中的条件 $sum

mongodb - 在 MongoDB 中创建自定义对象 ID

python - 在 Flask 中将表单 POST 对象转换为适合 mongodb 的表示形式

arrays - MongoDB重命名数组中的数据库字段

mongodb - 用于 maxdistance 和 MongoDB 的单位?

mongodb - $cond 中存在 $exists 的条件分组

node.js - 如何检查MongoDB native nodejs驱动程序中是否存在集合?

mongodb - 在 Mongo 中,如何显示集合的索引?