我對MongoDB數據庫有一個很奇怪的問題。我有一個收集近10,000條記錄。它有一個複合索引和一個常規索引。在某些情況下,MongoDB文本索引不會返回正確的結果
複合指數:
{
is_archived: 1,
name: 'text',
ean: 'text',
model: 'text',
mpn: 'text',
upc: 'text',
notes: 'text'
}
常規:
{
is_archived: 1
}
說有是集合在這樣的記錄:
{
is_archived: false,
name: 'String1 string2 string3 string4'
ean: '',
model: '',
mpn: '',
upc: '',
notes: ''
}
這樣的查詢(以目標以任何順序返回包含所有這些詞的所有文檔):
db.collection.find({
is_archived: false,
$text: {
$search: '"String1""string2""string3""string4"'
}
})
將返回上述文件。
這樣的查詢:
db.collection.find({
is_archived: false,
$text: {
$search: '"String1""string2"'
}
})
將返回上述文檔。
這樣的查詢:
db.collection.find({
is_archived: false,
$text: {
$search: '"string2""string3"'
}
})
將返回上述文檔。
的查詢是這樣的:
db.collection.find({
is_archived: false,
$text: {
$search: '"String1""string3"'
}
})
不會回報上述聲明。
同樣的問題也會出現在其他文檔中,但不會與所有文檔一起出現。
- 我正在運行版本2. *的MongoDB。新版本的同一個數據庫也有同樣的問題。
- 我試圖複製它在一個新的數據庫沒有成功。
- 我試圖重新索引/刪除並重新創建索引沒有任何運氣。
我想問兩個問題:
- 你以前見過嗎?它有任何意義嗎?
- 調試此問題的正確方法是什麼?我應該使用
explain
?
謝謝你們,這個問題真的讓我發瘋。
看看[這個鏈接](https://docs.mongodb.com/manual/reference/operator/query/text/#phrases)可以幫助你。 – Shrabanee
謝謝@Shrabanee。我不認爲這些查詢有什麼問題。否則,所有的查詢都不會返回任何內容。在這種情況下,一些查詢可以工作,而有些則不能 – kbariotis