У меня есть следующий объект:
user: {
_id: "xxx",
name: "Lucas",
items: [
{ name: "shoes", description: "nice shoes" },
{ name: "pants", description: "old pants" },
],
places: [
{name: "my house", loc: { type: "Point", coordinates: [-27, -43] }}
]
}
Мне нужно выполнить поиск текста ($ text), который возвращает только элементы. Например:
await User.find({ $text: { $search: "shoes" } });
Это работает! Но он также возвращает штаны, поскольку возвращает пользователя, а не только элемент массива. И это проблема, мне нужно разбить на элементы в моей базе данных. Поэтому мне нужно возвращать только элементы массива, соответствующие поиску $ text. Я знаю, что если бы элементы были самой коллекцией, они бы работали, но в моем случае они мне нужны внутри пользователя, потому что я комбинирую $ text для элементов и $ geoWithin для мест.
Итак, как мне вернуть пользователя хранить только те предметы, которые соответствуют моему текстовому поиску?