Morphia: добавьте настраиваемое поле проекции в Pojo.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Morphia: добавьте настраиваемое поле проекции в Pojo.

Сообщение Anonymous »

У меня есть сценарий, в котором в объекте mongodb есть список объектов. В каждом из этих объектов есть одно поле «тип». Я написал запрос, чтобы получить уникальные значения поля «тип».
Когда я запускаю агрегатный запрос, я получаю отличные результаты. Но в коде, когда я передаю результаты в свой собственный Pojo, я теряю значения полей. Я вижу их, когда привожу результаты в документ Bson.
есть ли способ сопоставить значения response в классе pojo, добавив дополнительное поле. Я также не хочу добавлять это поле в базу данных, мне просто нужно получить его для конкретных результатов.
Объект Mongo
{
"_id": {
"$oid": "5bcee...."
},
"Id": "xyz",
"ans": [
{
"anId": "8hf....",
"type": "W",
},
{
"anId": "5hfgh....",
"type": "W",
},
{
"anId": "58....",
"type": "P",
},
{
"anId": "8....",
"type": "B",
},
{
"anId": "45....",
"type": "A",
}.....
]}

Запрос Mongo:

[
{
$match:

{
Id: "xyz",
},
},
{
$project:

{
Id: 1,
response: {
$reduce: {
input: "$ans",
initialValue: [],
in: {
$setUnion: [
"$$value",
["$$this.type"],
],
},
},
},
},
},
]


мой код морфия
Projection projection = Projection.project()
.include(ID)

projection.include("types",
reduce(
Expressions.value( "$ans"),
Expressions.value(Arrays.asList()),
SetExpressions.setUnion(
Expressions.value("$$value"),
Expressions.value(Arrays.asList("$$this.type")))));

Aggregation query = datastore.aggregate(Page.class)
.match(createFilter(Id).toArray(new Filter[0]))
.project(projection);

/**
* i see the response values in the ann1
**/
List ann1 = query.execute(Document.class).toList();

List pages = query.execute(Page.class).toList();


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-the-pojo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»