簡體   English   中英

如何使用 MongoDB node.js 驅動程序執行包含查詢?

[英]How do you do a contains query using the MongoDB node.js driver?

我正在嘗試對包含某個子字符串的項目進行搜索,但我沒有得到任何結果(即使我知道數據適合查詢,包括大小寫):

collection.find({name: "/.*" + keyword + ".*/"}).toArray(function(err, items)

這不應該匹配包含關鍵字的所有內容嗎? 它只是返回一個空對象。

我只是在 ExpressJS 應用程序中使用常規的 MongoDB 驅動程序。

您需要首先構建一個正則表達式,應該嘗試這樣的事情:

var regex = RegExp("/.*" + keyword + ".*/")

然后將變量傳遞給查詢。 我通常發現將查詢作為變量進行查詢並將其傳入更容易:

var query = { FieldToSearch: new RegExp('^' + keyword) };
collection.find(query).toArray(...)

我已經將正則表達式作為左根正則表達式包含在內,以利用索引(如果可能的話,總是建議使用以提高性能)。 更多信息請看這里:

http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-RegularExpressions

試試這個:

var keyword = req.params.keywords;
var regex = RegExp(".*" + keyword + ".*");
Note.find({noteBody: regex, userID: userID})

我從請求參數中得到了關鍵字,我想用這些關鍵字從 noteBody 中搜索,現在關鍵字是一個變量。 如果要在數據庫中查找一個變量,格式必須是var regex = RegExp("." + keyword + ".")。 希望這可以幫助。 謝謝

我是這樣做的

    keyword = "text_to_search";
    collection.find({name: {$Regex: keyword, $options:$i }})

我使用 i $i 使查詢不區分大小寫,但您也可以使用其他選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM