如果關鍵字匹配,category.title那么它會給出結果,否則它不會與任何其他欄位匹配。有人可以告訴我這里有什么問題嗎?也試過NewsModel.find().or(filters)無$or鑰匙,還是不行。
let filters = {};
if (keyword) {
filters = {
$or: [
{
title: keyword,
},
{
shortDescription: keyword,
},
{
detailDescription: keyword,
},
{
"category.title": keyword,
},
],
};
}
const response = await NewsModel.find(filters);
貓鼬:6.3.0
更新:添加了資料庫集合
{
"_id": "625b83518b1eaedc58a74196",
"title": "Moon Knight",
"shortDescriptipn": "Embrace the chaos.",
"detailDescription": "When Steven Grant, a mild-mannered gift-shop employee...",
"category": [
{
"_id": "625b7dfd00e7f082f6d8d9fb",
"title": "Entertainment"
}
],
"createdAt": "2022-04-17T03:02:41.353Z",
"updatedAt": "2022-04-17T03:02:41.353Z",
"__v": 0
}
如果我正在搜索Entertainment,我會得到結果,但如果我正在搜索Moon Knight,我會得到空陣列。
uj5u.com熱心網友回復:
您可以使用此代碼使其作業,也可以shortDescriptipn在資料庫中拼寫錯誤。
我所做的是,我$or在正則運算式搜索中使用了關鍵字,因此您不需要撰寫完整的字串,如果它包含字串的那部分,它將回傳檔案并且不會是嚴格的完全匹配情況,我還添加了選項i,這將使搜索不區分大小寫。
查詢將如下所示:
db.collection.find({
$or: [
{
title: {
$regex: keyword,
$options: "i"
},
},
{
shortDescriptipn: {
$regex: keyword,
$options: "i"
},
},
{
detailDescription: {
$regex: keyword,
$options: "i"
},
},
{
"category.title": {
$regex: keyword,
$options: "i"
},
},
],
})
您也可以在這里查看查詢:https ://mongoplayground.net/p/7zuhbaNTWJY
讓我知道,如果您在評論中有任何疑問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/460151.html
標籤:javascript 节点.js 猫鼬
上一篇:外鍵作為陣列的貓鼬查找
