我對MongoDB
比較陌生,我試圖創建一個查詢,我雖然會很瑣碎(好吧,用SQL
就可以了),但我可以'完成。MongoDB:在分組後獲取最大版本號的條目
因此有一個集合patients
在這個集合中單個patient
是使用id
屬性標識的。 (不是mongodbs _id
!!)可以有多個版本的單個patient
,他的版本是由meta.versionId
字段決定的。
爲了查詢所有「當前版本的患者」,我需要獲得每patient
與特定id
最大versionId
。
到目前爲止,我已經得到了這個:
AggregateIterable<Document> allPatients = db.getCollection("patients").aggregate(Arrays.asList(
new Document("$group", new Document("_id", "$id")
.append("max", new Document("$max", "$meta.versionId")))));
allPatients.forEach(new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
});
導致下面的輸出(用我有限的測試數據):
{ "_id" : "2.25.260185450267055504591276882440338245053", "max" : "5" } { "_id" : "2.25.260185450267055504591276882441338245099", "max" : "0" }
似乎工作至今,但我需要獲得整個patients
集合。 現在我只知道id : 2.25.260185450267055504591276882440338245053
的最大版本是「5」,依此類推。當然,我現在可以爲每個單獨的條目創建一個自己的查詢,並從mongodb中順序獲取每個文檔的特定id
/versionId
-combo,但這看起來像是一個可怕的解決方案!有沒有其他的方法來完成它?
這是真的,但不幸的是我正在處理[FHIRs患者](https://www.hl7.org/fhir/patient.html)資源的配置文件,其結構相當複雜。所以,我更喜歡不同的方法。 –