gpt4 book ai didi

java - 使用Java通过数组对象字段值进行Mongo记录查询

转载 作者:行者123 更新时间:2023-12-01 18:45:32 24 4
gpt4 key购买 nike

我有一个名为“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

最佳答案

数组的子文档字段可以建立索引,这些索引称为多键索引。请参阅Index Arrays with Embedded Documents .

字段refmdList._id可以被索引。它可以提高使用该字段作为过滤条件的查询性能。

关于 Java 代码:

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

关于java - 使用Java通过数组对象字段值进行Mongo记录查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59849468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com