簡體   English   中英

具有正則表達式的MongoDB查找與Java的行為不同

[英]MongoDB find with regex behaves differently from Java

使用MongoDB 2.4.6進行正則表達式的行為與Java Pattern類的行為方式不同。 有誰能解釋為什么?

在MongoDB中插入數據:

db.Project.insert({ "_id" : "e0b57d9e-744c-471e-ae95-22a389d2988d", "name" : "Project.20131106101344433" });

查找所有項目:

db.Project.find()

{
    "_id" : "e0b57d9e-744c-471e-ae95-22a389d2988d",
    "name" : "Project.20131106101344433"
}

查找名稱為“t”的所有項目:

db.Project.find({"name" : /t/})

{
    "_id" : "e0b57d9e-744c-471e-ae95-22a389d2988d",
    "name" : "Project.20131106101344433"
}

檢查唯一的項目名稱與正則表達式“t”不匹配:

@Test
public void regex() {
    assertTrue(!Pattern.matches("t", "Project.20131106101344433"));
}

如您所見,正則表達式db.Project.find返回一個名稱不是“t”的項目,但包含“t”。 我錯過了什么?

謝謝!

在這種情況下, db.Project.find({"name" : /t/})您不是在尋找名稱為t的文檔,而是在查找名稱中包含t每個文檔。 你可以在這里閱讀PECL並測試你在這里做什么。

要查找完全匹配,您必須執行{"name" : 't'}

暫無
暫無

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

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