使用 Java 按数组对象字段值查询记录的 mongo



>我有一个名为"jobs"的集合,其中包含一个文档:

{
"_id": "4bb131682d0682845098eabe",
"jobId": "1403610",
"refmdList": [
{
"_id": "4bb11af1f8d48284e0b2ef87",
"addrIdx": 1,
"type": "primary"
}
],
"status": "Created in J4",
}

java代码用于使用以下方法查找该作业文档:

private DBCursor getRefMdCursor(String refId)
{
DB db = JDatabase.getDatabase();
BasicDBObject search = new BasicDBObject();
search.put("refmdList._id", refId);
DBCollection col = db.getCollection("jobs");
DBCursor cur = col.find(search);
return cur;
}

这非常慢,并且refmdList._id没有索引。是索引此数组对象字段以加快速度的解决方案,还是上面的 DBCursor 代码有问题?

DBCursor 类来自 mongodb/mongo-java-driver/3.4.3/mongo-java-driver-3.4.3.jar

数组的子文档字段可以编制索引,这些索引称为多键索引。请参阅使用嵌入文档的索引数组。

可以为字段refmdList._id编制索引。它可以提高使用该字段作为筛选条件的查询的性能。

关于 Java 代码:

您使用的MongoDB Java驱动程序是旧版本(3.4.3(,并且有最新版本(3.12.0(。此外,可以更改 Java 代码以使用较新的 API;请参阅查找操作中的示例。

最新更新