Как создать другое поле в документе mongoDB, которое фильтрует указанный элемент из существующего поля массива документоJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как создать другое поле в документе mongoDB, которое фильтрует указанный элемент из существующего поля массива документо

Сообщение Anonymous »

Я пытаюсь отфильтровать элементы из поля массива документов mongoDB, которые не равны предоставленному значению, и создать новое поле с отфильтрованными элементами, используя агрегацию с помощью метода $filter, но он не фильтрует, а вместо этого показывает все элементы в поле массива документа.
Вот пример:
Я хочу запросить документы, в хобби которых есть «чтение», а затем создайте еще одно новое поле массива в документе, которое не включает «чтение» с использованием агрегации.
пример данных:
[
{
"_id": 1,
"name": "Alice",
"age": 30,
"hobbies": ["reading","traveling"]
},
{
"_id": 2,
"name": "Bob",
"age": 25,
"hobbies": ["gardening", "photography"]
},
{
"name": "James",
"age": 30,
"hobbies": ["reading", "painting"]
},
{
"_id": 3,
"name": "Charlie",
"age": 35,
"hobbies": ["swimming", "cycling"]
}
]

Ожидаемый результат:
[
{
"_id": 1,
"name": "Alice",
"age": 30,
"hobbies": ["reading", "painting"], // includes "reading"
"FilteredItems": ["painting"] // Does not include "reading"
},
{
"name": "James",
"age": 30,
"hobbies": ["reading", "painting"], // includes "reading"
"FilteredItems": ["painting"] // Does not include "reading"
}
]

Просто как в javascript Array.find((item) => item != нежелательно)
Я попробовал метод $filter:db.users.aggregate([
{
$match: {
hobbies: "reading"
}
},
{
$project: {
name: 1,
age: 1,
filteredItems: {
$filter: {
input: "$hobbies",
as: "hobby",
cond: { $eq: ["$hobby", "reading"] }
}
}
}
}
]);


Подробнее здесь: https://stackoverflow.com/questions/787 ... ified-item
Ответить

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

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

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

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

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