Я знаю, как использовать поиск MongoDB Atlas для поиска заказов по его имени и заданному идентификатору покупателя вместе с известным / matched
именем поставщика. Например:
( Использование Mon goose ODM)
const searchResults = await Order.aggregate([
{
$search: {
text: {
query: '{search-term}',
path: 'name',
fuzzy: {
maxEdits: 2,
maxExpansions: 100,
},
},
},
},
{ $unwind: '$supplier' },
{
$lookup: {
from: 'suppliers',
localField: 'supplier',
foreignField: '_id',
as: 'suppliers',
},
},
{
$match: {
buyer: mongoose.Types.ObjectId('5e19a594c86e72017debf9dc'),
// The search term entered by a user:
'suppliers.name': 'supplierName',
},
},
]);
Однако я хотел бы иметь возможность использовать поиск MongoDB Atlas для:
- поиска всех заказов,
- при
Buyer ID
, - , где поисковый запрос - не может быть полным соответствием - это
Supplier name
, - , где Покупатель и Поставщик вложены в Заказ по ссылочным идентификаторам:
Имея схему Order
:
const orderSchema = new mongoose.Schema({
name: {
type: String,
minlength: 2,
maxlength: 255,
},
buyer: { type: ObjectId, ref: 'Buyer' },
supplier: { type: ObjectId, ref: 'Supplier' },
});
Buyer
схема:
const buyerSchema = new mongoose.Schema({
name: {
type: String,
},
...
});
Supplier
схема:
const supplierSchema = new mongoose.Schema({
name: {
type: String,
},
...
});