Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB findOne与使用$in和单个项目进行查找_Mongodb_Performance_Find - Fatal编程技术网

MongoDB findOne与使用$in和单个项目进行查找

MongoDB findOne与使用$in和单个项目进行查找,mongodb,performance,find,Mongodb,Performance,Find,我正在NodeJS服务上使用MongoClient。 作为提高服务性能的一部分,我想确定在查询Mongo时,在处理单id和多id时是否应该采取不同的行动。 我当前的代码如下所示: collection.find({id:{$in:ids}}) 我想知道,如果我将代码拆分为单独处理单个id,是否会使性能更好,有点像这样: 如果ids.count==1 collection.findOne({id:ids.first}) 其他的 collection.find({id:{$in:ids}}

我正在NodeJS服务上使用MongoClient。
作为提高服务性能的一部分,我想确定在查询Mongo时,在处理单id和多id时是否应该采取不同的行动。

我当前的代码如下所示:
collection.find({id:{$in:ids}})


我想知道,如果我将代码拆分为单独处理单个id,是否会使性能更好,有点像这样:
如果ids.count==1
collection.findOne({id:ids.first})
其他的
collection.find({id:{$in:ids}})

end

根据NodeJS的MongoDB驱动程序,findOne被弃用,取而代之的是find()

已弃用,请改用find().limit(1).next(函数(err,doc){})

更重要的是,
findOne()
find().limit(1.toArray()


我强烈建议您在将其用于生产之前先查看是否有不推荐的内容

在查询中使用explain()函数,以便比较执行时间。您可以从shell中这样做:db.collection.findOne({u id:“id”}).explain();谢谢@felix,我使用了
explain()
并运行了
find({id:{$in:[some_id])
find({id:some_id})
结果和相同的赢家计划!:)
findOne
不是我这里的主要关注点。我正在讨论是否将
find
{id:{$in:[some_id]}一起使用
,这意味着数组只包含一项,而使用
{id:some_id}
查找则会对性能产生任何影响。@Barakarizi如果要进行基准测试,则应避免使用不推荐的函数。我使用$in和不使用$in进行了测试,结果是绝对可比的(1ms和1ms)。与更好的方法相关:“使用你需要的”。因此我个人建议避免$in,因为它是比“更好/改进”速度更好的方法。我使用explain()来更好地理解获胜计划(mongo)实际上,这是同一个获胜计划,因此我决定不采用单/多方法进行分离。看起来findOne不再被弃用了。