930
技術社區[雲棲]
MONGOOSE 多條件模煳查詢的實現
這是今天手頭項目中遇到的一個問題,關於mongoose
如何實現類似於SQL中 nick LIKE '%keyword%' or email LIKE '%keyword%'
這種多條件模煳搜索的問題。 查閱了mongoose文檔才得以實現,特此記錄一下。
主要用到了query.$or
和query.$regex
這兩個find
參數。
其中query.$or
用於實現多條件查詢,其值是一個數組。相關文檔
示例代碼:
query.or([{ color: 'red' }, { status: 'emergency' }])
query.$regex
用於實現模煳查詢。相關文檔
示例代碼:
{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: /pattern/<options> }
通過以上兩個參數就可以實現多條件模煳查詢了。以User表為例,通過輸入一個關鍵字,來匹配昵稱或者郵箱與關鍵字相近的記錄。
示例代碼:
const keyword = this.params.keyword //從URL中傳來的 keyword參數
const reg = new RegExp(keyword, 'i') //不區分大小寫
const result = yield User.find(
{
$or : [ //多條件,數組
{nick : {$regex : reg}},
{email : {$regex : reg}}
]
},
{
password : 0
},
{
sort : { _id : -1 },
limit : 100
}
)
最後更新:2017-11-03 11:03:55