在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,并且 注册以处理此类型。
我坚持到这一点:
如何注册特定类型的编解码器,这将是 汇总结果返回的值?
是否可以在聚合阶段指定类型?
我在这里没有使用提供 TypedAggregation
的Spring。