[英]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.