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