我是使用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"
}
我需要使用一个可能很多的"id"在$in查询中查询文档。查询很简单,
// 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方面,我可能忽略了什么导致这种减速?