簡體   English   中英

似乎無法使用正則表達式使MongoDB find()與PHP一起使用

[英]can't seem to get MongoDB find() with regex to work using PHP

我對MongoDB相當陌生(我已經閱讀了文檔)

這是我的數據示例:

{ 
"_id" : ObjectId("53297684786d226f57ecbd60"),
"country" : "US", 
"short_state" : "FL", 
"state" : "Florida", 
"zip" : "33169", 
"city" : "Miami", 
"slug" : "miami-fl", 
"search_terms" : "miami fl miami florida" 
}

我正在嘗試匹配(類似於MySQL LIKE'%term%')搜索詞...我嘗試:

  • db.geo_table.find({search_terms:/ ^ miami fl / i}); - 火柴
  • db.geo_table.find({search_terms:/ ^ miami florida / i})-不
    比賽
  • db.geo_table.find({search_terms:/ ^邁阿密佛羅里達。* / i}); - 不匹配
  • db.geo_table.find({search_terms:/ ^ florida / i}); - 才不是
    比賽
  • db.geo_table.find({search_terms:/ ^ .miami佛羅里達 ./i}); -沒有比賽

基本上我該如何獲取正則表達式來匹配我的search_terms的任何變體? miamiiami flami florimiami flo等等。

謝謝

在REGEX中,您使用^表示需要從頭開始對表達式進行求值。 對於您的字符串:

miami fl miami florida

這是正確的,因為術語miami fl實際上確實出現在字符串的開頭。

db.geo_table.find({search_terms : /^miami fl/i}); - MATCHES

REGEX的其他所有變體都不會出現在字符串的開頭,因為在fl ,您有一個空格。

如果要使其余部分匹配,請移除錨點,然后進行匹配:

db.geo_table.find({search_terms : /miami florida/i});

暫無
暫無

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

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