閱讀930 返回首頁    go 技術社區[雲棲]


MONGOOSE 多條件模煳查詢的實現

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

主要用到了query.$orquery.$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

  上一篇:go  CSS3實現京東圖片鼠標滑過流光效果
  下一篇:go  千百倍的性能提升-Andrew大師談數據庫性能優化