У меня есть сценарий, в котором в объекте 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
Morphia: добавьте настраиваемое поле проекции в Pojo. ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1731513257
Anonymous
У меня есть сценарий, в котором в объекте mongodb есть список объектов. В каждом из этих объектов есть одно поле «тип». Я написал запрос, чтобы получить уникальные значения поля «тип».
Когда я запускаю агрегатный запрос, я получаю отличные результаты. Но в коде, когда я передаю результаты в свой собственный Pojo, я теряю значения полей. Я вижу их, когда привожу результаты в документ Bson.
есть ли способ сопоставить значения [b]response[/b] в классе 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();
Подробнее здесь: [url]https://stackoverflow.com/questions/79185655/morphia-add-the-custom-projection-field-in-the-pojo[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия