我正在使用 MongoDB api 访问 Azure 上的 CosmosDb。我收集了几千份文件。
它们的形状是这样的:
{
"_id" : ObjectId("5b4f574ac2100c890805a7d8"),
"id" : 12,
"name" : "Spotted Owl",
"overview" : "Some Overview text",
"family" : "Barn Owls, Typical Owls (Tytonidae & Strigidae)",
"latinName" : "Strix occidentalis"
}
我需要在 $in 查询中使用可能大量的“id”来查询文档。查询很简单,
// The "$in" list can be 1000 items long.
db.MyCollection.find({"id": {$in: [1,2,3,4,5,6...]}})
我有一个非唯一索引(可能应该是唯一的):
{
"id" : 1
}
结果是包含 1000 个项目的查询需要 20 秒或更长时间才能返回。如果我只是简单地获得所有文件:
db.MyCollection.find({});
结果不到一秒钟即可返回。
此外,如果我对本地本地 Mongo 实例运行相同的测试,则两个查询都会在一秒钟内返回。
我在 Azure/CosmosDb 方面缺少什么可能导致所有这些减速?