0
我使用MongoDB。爲了測試的原因,我創建了一個數據庫(500 000 000個文檔)和一個數據庫。所有文件看起來像波紋管:Mongodb;在具有多個條件的查詢中使用索引
{
"_id" : ObjectId("50c1fbcda8cf8e11c43ea8ce"),
"sql_id" : 8311,
"text" : "WD7TYIM0H H3Q 3874 000 VFBF6H",
"xml" : "<root> <tag_0>WD7TYIM0H</tag_0> <tag_1>H3Q</tag_1> <tag_2>3874</tag_2><tag_3>000</tag_3><tag_4>VFBF6H</tag_4></root>",
"tags" : [
"WD7TYIM0H",
"H3Q",
"3874",
"000",
"VFBF6H"
]
}
創建通過現場的「標籤」指數,並希望使用使用「標籤」索引多個正則表達式的條件。這可能嗎?
我想:
> db.items.find({ "$and" : [{ "tags" : /^AAA/ }, { "tags" : /^BBB/ }] })
> db.items.find({ "tags" : { "$all" : [/^AAA/, /^BBB/] } })
兩次蒙戈下去。
如果我通過一個條件搜索結果返回非常快。
謝謝!
爲什麼不將兩個查詢合併爲一個正則表達式? –
我想要同時檢索包含標籤AAA和BBB的所有文檔。所以我不能使用一個正則表達式作爲/^AAA/<=>/^ AAA */[guids](http://docs.mongodb.org/manual/reference/operators/#_S_regex),並且查詢顯示了文檔標籤「AAA_1」,「AAA_2」,「AAA_3」... – Alliancer
原因是你有巨大的收藏(我不確定你的機器的具體情況),並且當你使用正則表達式時,即使「標籤」被索引,由於正則表達式評估的性質,它並不真正使用它。你可以在shell上做一個解釋,看看Cursor是什麼樣的。當迭代次數非常龐大時,當然需要很長時間。 – muruga