我可以期待生成的對象ID爲插在未來過於每一條記錄是唯一的? (懷疑它是否可以重複)
我正在使用MongoDB java驅動程序。自己生成對象標識是否好,還是使用從驅動程序或MongoDB本身生成的內容好?
如果您沒有提供文檔的對象ID,mongo會自動爲您生成它。所有文件都必須有_id。這裏是相關的參考。
The relevant part is
ObjectId is a 12-byte BSON type, constructed using:
a 4-byte value representing the seconds since the Unix epoch,
a 3-byte machine identifier,
a 2-byte process id, and
a 3-byte counter, starting with a random value.
http://docs.mongodb.org/manual/reference/object-id/
我想這是綽綽有餘隨機多(雖然窮哈希的選擇,因爲單調日期/時間的增加)
如果我做一個查找的特定值每個插入前的列,我擔心應用程序的性能,因爲它應該有成千上萬的記錄。什麼是做這個驗證的最好方法?
首先指定字段(mongodb中沒有列,2個文檔可以有不同的字段)。
db.collection_name.ensureIndex({fieldName : 1})
什麼是檢索最後插入的文件,找到上次處理>信息ID的最佳方式?
有趣的事實。如果我們使用一次,然後刪除文檔,我們不需要info id字段。 _id字段按照日期排序。但是,如果文檔定期更新,那麼我們需要使用查找和修改操作以原子方式修改文檔。
http://api.mongodb.org/java/2.6/com/mongodb/DBCollection.html#findAndModify%28com.mongodb.DBObject,%20com.mongodb.DBObject,%20com.mongodb.DBObject,%20boolean,%20com.mongodb.DBObject,%20boolean,%20boolean%29
現在你已經更新了最後插入/修改文件的日期。確保此字段已編入索引。現在,使用上面的鏈接,查找排序參數,並與
我在一些地方執行插入時,他們在談論兩個寫看到的,一個填充它的文件寫入到集合另一個將它寫入另一個集合,最後更新以跟蹤最後插入的條目。這是一個好方法嗎?對於關係數據庫,我們通常不會這樣做。
糟糕的主意!歡迎來到Mongo。你可以做得比這更好。
這裏有太多問題。通過一點搜索,你會找到每一個這樣的答案。 'ObjectIds'總是唯一的並且包含時間戳。 http://stackoverflow.com/questions/3305561/how-to-query-mongodb-with-like – WiredPrairie
這些是多個無關的問題,其中很多都很常見。請檢查搜索功能的答案,然後爲每個找不到答案的單獨問題。 – Philipp
@WiredPrairie這是Google結果的有趣部分。 – thedp