MongoDB NodeJS Native Driver(mongodb) vs Mongo Shell Perform



我在 table1 的 MongoDB 中有 10000 条记录。

数据如下:

"_id" : ObjectId("5d5e500cb89312272cfe51fc"),
"cities" : [ 
{
"cityid" : "5d5d2205cdd42d1cf0a92b33",
"value" : "XYZ"
}, 
{
"cityid" : "5d5d2214cdd42d1cf0a92b34",
"value" : "Rowcliffe"
}, 
],

查询如下:

{
$unwind: "$cities"
},
{ "$addFields": { "cities.cityid": { "$toObjectId": "$cities.cityid" } } },
{
$lookup: {
from: "cities",
localField: "cities.cityid",
foreignField: "_id",
as: "docs"
}
},

所以,在这里我在另一个表中查找 cityid,并在 Robo3T 和 mongo shell 中使用查找查询。一切正常。

我在0.08 秒内获得了 10000 条记录的结果。

现在,相同的查询 m 使用mongodb 本机驱动程序在 nodejs中运行,这里 m 在15 秒内得到结果。

我不明白为什么这两者之间存在如此巨大的差异。我不知道我在nodejs中做错了什么。我已经使用 mongodb 本机驱动程序在 nodejs 中编写了相同的查询。

请让我知道我做错了什么。

为什么这个nodejs mongodb本机驱动程序性能如此差?

在Robo3T中有一个默认的查询限制,所以它花费的时间更少,因为当它获取限制时,它会退出。

为了避免这种情况,您需要在查询执行中添加以下内容:

// change the limit size, default 50
DBQuery.shellBatchSize = 500000; 

最新更新