HOWTO · MongoDB

類似於 MongoDB 中的 SQL LIKE 語句的查詢

在本文中,我們將使用 MongoDB 使用類似於 SQL LIKE 語句的查詢來獲取資料。我們將使用正規表示式在 MongoDB 中搜尋文件。

本頁內容

MongoDB 是一個強大的 NoSQL 資料庫伺服器。它使用帶有可選模式的類 JSON 文件來儲存資料。

對於開發人員來說,組織資料始終是一項必不可少的任務,因為它在應用程式的效能中起著最關鍵的作用。在 MongoDB 中,你可以使用類似於 SQL LIKE 語句的查詢來獲取資料。

在 MongoDB 中建立資料庫

我們將在本教程中的示例中使用一些虛擬資料。你還可以建立資料庫並執行下面給出的命令來插入虛擬資料。

db={
    "colors": [
        {
            "id": 100,
            "color": "Pink"
        },
        {
            "id": 101,
            "color": "Purple"
        },
        {
            "id": 102,
            "color": "Black"
        },
        {
            "id": 103,
            "color": "Blue"
        }
    ]
}

MongoDB 中的 db.collection.find() 方法

在 MongoDB 集合中搜尋時,最關鍵的部分是靈活而直接的 db.collection.find() 方法。

使用 db.collection.find(),,你可以通過幾個簡單的引數傳遞文件集合並返回一個游標,從而輕鬆查詢文件集合。

遊標 只是一個結果集。我們可以遍歷它來操作或以其他方式使用游標指向的文件。

db.collection.find() 方法的一個簡單示例如下所示。

> db.colors.find()

輸出:

查詢資料庫

上面的程式返回一個集合中的所有文件。但這對於生產要求來說是非常少見的。

你總是需要一些來自資料庫的過濾結果。

例如,如果你想獲取包含 color: Pink 的所有資料。執行下面的查詢。

>  db.colors.find({color: "Pink"})

輸出:

查詢資料庫 2

使用 db.collection.find() 方法查詢類似於 MongoDB 中的 SQL LIKE 語句

你可以使用正規表示式在 MongoDB 中搜尋文件。這將類似於 SQL 查詢中的 LIKE 語句。

現在你正在使用 .find() 來查詢你的集合,你可以稍微改變你的語法並開始根據可能是特定欄位中的部分匹配的單詞或短語來查詢匹配項,類似於 SQL 引擎的方式使用 LIKE 運算子。

該技巧利用正規表示式 (regex),即定義搜尋模式的文字字串。幾個正規表示式引擎是用不同的語法編寫的,但基本原理是相同的。

在最基本的層面上,正規表示式是兩邊用一個斜槓 (/) 括起來的字串。

db.collection.find({
    "k": /pattern/
})

但目前,由於 shell 正規表示式在查詢 mongoplayground.net 時不起作用,你可以使用下面給出的表示式。

db.collection.find({
    "k": {
        "$regex": "pattern"
    }
})

例如,如果你想使用正規表示式執行與上例相同的查詢並找出有多少文件包含顏色 Pink,你可以將字串 "Pink" 替換為 /Pink/

使用 db.collection.find() 方法在任何地方搜尋匹配的字串

第一條語句將搜尋顏色名稱在字串中任何位置包含 Pink 的所有文件。第二條語句搜尋顏色名稱中包含 Bl 的所有記錄。

此查詢的 SQL 語句:

select * from colors where color LIKE "%Pink%"

此查詢的 MongoDB 語句:

db.colors.find({
    "color": {
        "$regex": "Pink"
    }
})

輸出:

用 Like 查詢

此查詢的 MongoDB 語句:

db.colors.find({
    "color": {
        "$regex": "Bl"
    }
})

輸出:

用 Like 2 查詢

使用正規表示式而不是標準的帶引號的字串,你可以開始查詢部分單詞或短語匹配。

使用帶有^db.collection.find() 方法來搜尋匹配字串的起始字元

這將匹配所有以字元 P 開頭的字串。例如,使用了胡蘿蔔^符號。

此查詢的 SQL 語句:

select * from colors where color LIKE "P%"

此查詢的 MongoDB 語句:

db.colors.find({
    "color": {
        "$regex": "^P"
    }
})

輸出:

用 Like 3 查詢

使用帶有 $db.collection.find() 方法來搜尋匹配的字串結束字元

美元 $ 符號匹配以特定字元結尾的字串。

下面的示例匹配所有以字元 k 結尾的字串。

此查詢的 SQL 語句:

select * from colors where color LIKE "%k"

此查詢的 MongoDB 語句:

db.colors.find({
    "color": {
        "$regex": "k$"
    }
})

輸出:

用 Like 4 查詢

使用 db.collection.find() 方法和 i 在任何情況下搜尋匹配字串

預設的 db.collection.find 方法搜尋時區分大小寫。但是,你可以使用下面使用的 i 選項指示 find 命令在任何情況下匹配字元。

此查詢的 SQL 語句:

select * from colors where color LIKE BINARY "pink"

此查詢的 MongoDB 語句:

db.colors.find({
    "color": {
        "$regex": "k$/i"
    }
})

輸出:

用 Like 5 查詢

這篇 MongoDB 教程文章教你如何在 MongoDB 中搜尋類似於 SQL LIKE 語句的資料庫。