我在某處調用ensureIndex()
實際上創建了一個集合,如果它不存在。但索引總是在一些領域,而不是所有的領域,所以如果我確保索引{ name:1 }
然後添加文件到該集合有更多的領域,索引將工作?我知道我們沒有來自RDBMS世界的模式,我只是想確定一下。 :)我想在我的網站啓動時創建索引,但最初數據庫是空的。在確保索引之前,我不需要任何數據,這是否正確?可以在不存在的集合上調用ensureIndex嗎?
10
A
回答
9
ensureIndex
將創建集合,如果它還不存在。如果您添加的文檔沒有索引所涵蓋的屬性,則無關緊要,您無法使用該索引來查找這些文檔。我理解它的方式是,在1.7.4之前的版本中,缺少索引的屬性的文檔將被索引,就像它具有該屬性一樣,但是會爲空值。在1.7.4之後的版本中,您可以創建不包含這些對象的稀疏索引。差異很小,但在某些情況下可能很重要。
根據具體情況,在應用程序啓動時創建索引可能不是一個好主意。考慮在部署新版本時添加新索引的情況,在開發時您不會注意到這一點,因爲您只有一個小型數據庫,但是在生產中您可能擁有龐大的數據庫,並且添加索引需要很多時間的時間。在創建索引期間,您的應用將掛起,您無法提供請求。您可以創建背景標誌設置爲true的索引(語法取決於您使用的驅動程序),但在大多數情況下,最好手動添加索引或作爲安裝腳本的一部分。這樣你在更新索引之前就必須考慮。
相關問題
- 1. ravendb集合可以在內存中嗎?
- 2. 我可以將Python函數存儲在MongoDB集合上嗎?
- 3. 可以jsp:param存儲一個集合嗎?
- 4. AutoMapper可以在源上爲每個集合成員調用目標方法嗎?
- 5. MongoDB集合可以在其中有另一個集合嗎?
- 6. 我們可以在java集合中保存jpeg/png圖像嗎?
- 7. 如何通過指定集合名稱在AdvancedDatastore中使用ensureIndex?
- 8. 使用Casbah在Mongo中到期集合EnsureIndex
- 9. 在主幹集合上調用調用
- 10. 可靠集合可以在服務結構之外使用嗎?
- 11. 可以檢查一個集合或子集合是否存在?
- 12. FluentValidation可以使用嵌套集合嗎?
- 13. 可以在Chrome存儲API集調用中使用的鍵是變量嗎?
- 14. 我可以更新Parallel.For正在使用的集合嗎?
- 15. 使用Wpf DataGrid可以將集合嵌入到集合中嗎?
- 16. 在MEAN應用程序中Sessions集合太大。可以清除集合嗎?
- 17. 我可以在集合上使用Iterator來獲取Java中的元素嗎?
- 18. 是否可以調用選定集合上的元素(?)?
- 19. getElementById可以在文檔以外的東西上調用嗎?
- 20. 我可以在Realm Swift中使用異構集合嗎?
- 21. 那麼unique_ptr可以在stl集合中安全使用嗎?
- 22. 我可以在Android設備上檢測「LED通知」的存在/不存在嗎?
- 23. 我可以在不使用.each()的情況下渲染此集合嗎?
- 24. 在ZooKeeper中,我可以在不存在的znode上使用async getData()嗎?
- 25. NHibernate:在集合上調用.RemoveAll
- 26. 我可以在influxdb的多個維度上調用一個聚合函數嗎?
- 27. 我可以在複合組件中的bean上調用方法嗎?
- 28. Backbone.js可以在集合的添加處理程序中的視圖上調用方法嗎?
- 29. 我可以在MongoDB中保存一個集合中的每個對象嗎?
- 30. 我可以切片PL/SQL集合嗎?
我正在使用ASP.NET MVC和官方的C#驅動程序,但我覺得這個問題是技術不可知的。我還沒有想過將索引調用放到我的構建腳本中,但聽起來很有趣,我需要找到如何從命令行調用'ensureIndex'。 – 2011-03-15 14:09:36
我認爲應該可以從通過mongo shell加載的JS腳本調用'ensureIndex'。 – 2011-03-15 14:15:56
您可以使用'mongo db_name script.js'運行JavaScript文件。該文件可以包含您可以在Mongo控制檯中輸入的大部分內容。 – Theo 2011-03-15 14:16:52