MongoDB + Java驱动程序:聚合阶段返回特定类型

时间:2019-05-27 19:57:31

标签: java mongodb mongodb-query

在MongoDB中有评论的集合。对于此集合,有一个已注册的编解码器。

If IsNull(Me.Pallet2.Value) Then

在代码的某个地方,我想执行一个聚合,在MongoDB Compass中看起来像这样:

this.pojoCodecRegistry =
                fromRegistries(
                        MongoClientSettings.getDefaultCodecRegistry(),
                        fromProviders(PojoCodecProvider.builder().automatic(true).build()));
this.commentCollection =
                db.getCollection(COMMENT_COLLECTION, Comment.class).withCodecRegistry(pojoCodecRegistry);

在Java中,它将转换为:

{
  _id: {user: {"email": "$email"}},
  "count": {
    "$sum": 1
  }
},
{
  "count": -1
}

执行代码时,我遇到一个异常,说:

  

使用AutomaticPojoCodec解码时发生异常。   解码为“注释”失败,但有以下异常:

     

无法解码“注释”。解码“ _id”时出现以下错误:readObjectId   仅在CurrentBSONType为OBJECT_ID时才能调用,而在   CurrentBSONType为DOCUMENT。

     

可能需要显式配置自定义编解码器或PojoCodec,并且   注册以处理此类型。

我坚持到这一点:

  1. 如何注册特定类型的编解码器,这将是 汇总结果返回的值?

  2. 是否可以在聚合阶段指定类型?

我在这里没有使用提供 TypedAggregation

的Spring。

0 个答案:

没有答案