Mongoose 多條件模糊查詢的實現

這是今天手頭項目中遇到的一個問題,關於mongoose如何實現相似於SQL中 nick LIKE '%keyword%' or email LIKE '%keyword%' 這種多條件模糊搜索的問題。 查閱了mongoose文檔才得以實現,特此記錄一下。javascript

主要用到了query.$orquery.$regex這兩個find參數。html

其中query.$or用於實現多條件查詢,其值是一個數組。相關文檔java

示例代碼:node

query.or([{ color: 'red' }, { status: 'emergency' }])

query.$regex用於實現模糊查詢。相關文檔api

示例代碼:數組

{ <field>: { $regex: /pattern/, $options: '<options>' } }
{ <field>: /pattern/<options> }

經過以上兩個參數就能夠實現多條件模糊查詢了。以User表爲例,經過輸入一個關鍵字,來匹配暱稱或者郵箱與關鍵字相近的記錄。mongoose

示例代碼:this

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
    }
)
相關文章
相關標籤/搜索