gpt4 book ai didi

java - Hashmap 中的 Mongo 查询具有未知的哈希键

转载 作者:可可西里 更新时间:2023-11-01 09:36:56 24 4
gpt4 key购买 nike

平台:MongoDB、Spring、SpringDataMongoDB

我有一个名为“Encounter”的集合,结构如下

遇到:

{ "_id" : "49a0515b-e020-4e0d-aa6c-6f96bb867288", 
"_class" : "com.keype.hawk.health.emr.api.transaction.model.Encounter",
"encounterTypeId" : "c4f657f0-015d-4b02-a216-f3beba2c64be",
"visitId" : "8b4c48c6-d969-4926-8b8f-05d2f58491ae",
"status" : "ACTIVE",
"form" :
{
"_id" : "be3cddc5-4cec-4ce5-8592-72f1d7a0f093",
"formCode" : "CBC",
"fields" : {
"dc" : {
"label" : "DC",
"name" : "tc",
},
"tc" : {
"label" : "TC",
"name" : "tc",


},
"notes" : {
"label" : "Notes",
"name" : "notes",
}
},
"notes" : "Blood Test",
"dateCreated" : NumberLong("1376916746564"),
"dateModified" : NumberLong("1376916746564"),
"staffCreated" : 10013,
"staffModified" : 10013

},
}

元素“fields”使用 Java Hashmap 表示为:

protected LinkedHashMap<String, Field> fields;

hashmap()的Key不是固定的,而是在运行时生成的。

如何查询以获取集合中“label”=“TC”的所有文档?

无法像 db.encounter.find({'form.fields.dc.label':'TC'}) 那样查询,因为元素名称“dc”未知。我想跳过那个职位和执行查询,比如:

db.encounter.find({'form.fields.*.label':'TC'});

有什么想法吗?

此外,在这种情况下如何最好地使用索引?

最佳答案

如果 fields 是一个数组,而您的键是子文档的一部分:

"fields" : [
{ "key" : "dc",
"label" : "DC",
"name" : "dc"
},
{ "key" : "tc",
"label" : "TC",
"name" : "tc"
}
]

在这种情况下,您可以简单地查询数组中的任何子元素:

db.coll.find({"form.fields.label":"TC"})

不确定如何将它与 Spring 集成,但也许这个想法有帮助?就索引而言,您可以对数组进行索引,这为您提供了一个多键索引。基本上,索引将有一个单独的条目指向每个数组值的文档。

关于java - Hashmap 中的 Mongo 查询具有未知的哈希键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729014/

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