0
我有一個集合中的項目MongoDB中如下相同的數據:嗎啡聚合管道總是返回
{
"_id": "MY ID",
"myCollection": [{
"code": "Código 1",
"description": "Descripción entidad 1",
},
{
"code": "Código 2",
"description": "Descripción entidad 2",
},
{
"code": "Código 3",
"description": "Descripción entidad 3",
},
... follows to 19
如果我使用AggregationPipeline這樣的:
AggregationPipeline pipeline = getDs().createAggregation(EntidadInfoEntity.class).unwind("myCollection")
.sort(new Sort("myCollection.descripcion", 1)).limit(resultadosPorPagina);
Iterator<EntidadInfoEntity> resultado = pipeline.aggregate(EntidadInfoEntity.class);
while (resultado.hasNext()) {
EntidadInfoEntity entidadInfo = resultado.next();
System.out.println(HerramientasJson.getInstance().convertirAJson(entidadInfo));
}
我總是得到相同結果:
{"myCollection":[{"code":"Código 1","description":"Descripción entidad 1"}
{"myCollection":[{"code":"Código 1","description":"Descripción entidad 1"}
{"myCollection":[{"code":"Código 1","description":"Descripción entidad 1"}
奇怪的是,如果我調試管道,我得到這個「階段」值:
[{ "$unwind" : "$myCollection"}, { "$sort" : { "myCollection.description" : 1}}, { "$limit" : 25}]
如果我嘗試去執行它直屬MongoDB的外殼:
db.myEntities.aggregate([{ "$unwind" : "$myCollection"}, { "$sort" : { "myCollection.description" : 1}}, { "$limit" : 25}])
我得到正確的結果:
{"myCollection":[{"code":"Código 1","description":"Descripción entidad 1"}]}
{"myCollection":[{"code":"Código 2","description":"Descripción entidad 2"}]}
{"myCollection":[{"code":"Código 3","description":"Descripción entidad 3"}]}
任何想法,爲什麼會是什麼?難道我做錯了什麼?
問候
注:一些數據被改寫,試圖更清晰地說明問題。輸入錯誤可能會發生,但行爲正如我所解釋的那樣。
在Morphia內部調試時,我發現這是由於在MorphiaIterator中使用了內部緩存。它認爲每次都是同一個對象,而不是建立一個新對象。我無法找到避免使用緩存或清除緩存的方法。這是一個錯誤? – Faliorn