Lain kali tolong tambahkan contoh dokumen Anda sehingga orang dapat mereproduksi masalah Anda. Setelah mengatakan bahwa saya tidak melihat di mana masalah Anda. Saya membuat beberapa data untuk mereproduksi usecase Anda. Jadi saya menambahkan dokumen berikut:
{
"_id" : ObjectId("5a0d5d376c9b762a7c035ec4"),
"projectName" : "some stack test",
"price" : NumberInt(45),
"propertyId" : {
"prefix" : "a",
"number" : "7"
}
}
Kemudian saya mengeksekusi skrip Anda (tanpa pengurutan) dan berfungsi dengan baik:
db.yourCollectionName.aggregate([
{
$project: {
"projectName": 1,
"price": 1,
"document": '$$ROOT'
}
},
{
$addFields: {
"document.id": {
$concat: ['$document.propertyId.prefix', '$document.propertyId.number']
}
}
},
{
$match: {
$and: [{
$or: [{
"projectName": {
$regex: '.*' + "some stack test"
}
},
{
"document.id": {
$regex: '.*' + "a" + '.*',
$options: "7"
}
}
]
}]
}
},
{
$replaceRoot: {
newRoot: "$document"
}
}
])
Fakta bahwa Anda tidak mendapatkan hasil mungkin karena parameter permintaan Anda. Selain itu bagaimana "projectName"
memiliki parameter pencarian yang sama dengan "document.id"
your Anda Apakah mereka cocok? Periksa saluran kecocokan Anda lagi:
{"projectName": {$regex: '.*' + req.query.search + '.*', $options: "i"}},
{'document.id': {$regex: '.*' + req.query.search + '.*', $options: "i"}}