簡體   English   中英

查找字符串中數組中所有出現的元素

[英]Find all occurrences of elements in an array in a string

我的文件類似於以下格式:

IMG1

用戶執行搜索時,他們將數組發送到后端。 此數組包含至少一個元素。

假設他們將['javascript']發送到后端。 有沒有一種查詢MongoDB的方法來查找包含javascript單詞的文檔?

我嘗試過類似

db.find({ body: { $all:['javascript'] } });

但這僅在body也是數組的情況下才有效。 有什么辦法可以做到這一點?

您可以將管道分隔的正則表達式模式與關鍵字列表一起使用,如下所示:

const subStrings = ["javascript", "php", "python"];
const regex = subStrings.join("|");


 db.find ({
   body: { $regex: regex, $options: 'i' }
});

使用$regex運算符,並將字符串中包含的正則表達式傳遞給它:

db.find({ body: { $regex: ".*javascript.*" }});

您也可以這樣做:

db.find({ body: /.*javascript.*/ });
db.find({ body: /javascript/ });

首先,您需要在要搜索的字段上創建文本索引。 如果要搜索所有字段

db.collection.createIndex( { "$**": "text" } )

或者,如果您只想包含幾個特定字段,則可以

db.collection.createIndex( { title: "text", body: "text" } )

您也可以添加重量,例如。 在您的情況下,標題的權重應大於說明。

然后,您可以進行如下搜索:

db.collection.find( { $text: { $search: "java javascript python" } } )

這將搜索包含任何或所有這些單詞的所有文檔。

暫無
暫無

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

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