我在表1的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"
}
},
因此,在这里,我在另一个表中使用Robo3T和mongo shell中的查找查询来查找cityid。一切正常。
我在 0.08秒中获得10000条记录的结果。
现在,使用mongodb本机驱动程序在 nodejs中运行相同的查询,这里在 15秒内获得结果。
我不明白为什么两者之间会有如此巨大的差异。我不知道我在nodejs中做错了什么。我已经使用mongodb本机驱动程序在nodejs中编写了相同的查询。
请让我知道我在做什么错。
为什么此nodejs mongodb本机驱动程序性能如此差?
答案 0 :(得分:1)
在Robo3T中,有一个默认的查询限制,因此它花费的时间更少,因为在获取限制时退出了。
为避免这种情况,您需要在查询执行中添加以下内容:
// change the limit size, default 50
DBQuery.shellBatchSize = 500000;