我希望獲得剛剛插入的使用insertOne
的文件ObjectId
。
我認爲,一種方法是在客戶端生成_id,另一種方式是通過指定字段與文檔進行查詢。哪種方法更好或有其他方法?
ps:我知道mongo中的ObjectId是用機器和時間信息生成的。
總之,我只是想知道mongo ObjectId應該在客戶端還是mongod服務器上生成的意思呢?mongo scala驅動程序使用後得到_id insertOne
2
A
回答
1
正如MongoDB文檔指定的那樣,如果您使用可變文檔,您應該使用由MongoDB自動創建的_id自動取回文檔(如果沒有提供)。
Insert MongoDB -> See warning part
正如你在斯卡拉知道我們是在默認情況下inmutable對象工作的大部分時間。這是很好的,因爲你避免了副作用導致的失敗。例如,如果連接兩個列表,您將獲得一個新的列表,並且在您插入一個鍵時會返回一個新的Map,同樣的情況也會發生。作爲Java的其他語言的opossite,您將只有一個對象(指針)可以改變其內部狀態。
所以如果你使用蒙戈的inmmutable文件:
val doc: org.mongodb.scala.bson.collection.immutable.Document = Document("name" -> "MongoDB", "type" -> "database",
"count" -> 1, "info" -> Document("x" -> 203, "y" -> 102))
collection.insertOne(doc)...
「DOC」將是inmmutable(讓你不將蒙哥通過自動生成的_id)。
但是如果你使用:
val doc: org.mongodb.scala.bson.collection.mutable.Document = Document("name" -> "MongoDB", "type" -> "database",
"count" -> 1, "info" -> Document("x" -> 203, "y" -> 102))
collection.insertOne(doc)...
在插入之後,你將不得不在你的「文檔」文件的_id領域。
就像你說的另一種方式是始終提供的ObjectId使用類似:
val doc: Document = Document("_id" -> ObjectId(), "name" -> "MongoDB"...)
相關問題
- 1. Mongo Scala驅動程序2.1 - case class error
- 2. 使用scala mongo驅動程序序列化爲對象?
- 3. Scalatra和Mongo insertOne錯誤 - java.lang.NoSuchMethodError:com.mongodb.operation.MixedBulkWriteOperation.bypassDocumentValidation
- 4. 使用akka-http和mongo-scala驅動程序
- 5. Mongo C驅動程序通過_id訪問文檔
- 6. 識別使用Mongo C#驅動程序的成功插入
- 7. Ruby Mongo驅動程序 - Find_by_Id
- 8. 使用java驅動程序爲GridFS定製_id
- 9. 上傳文件到Mongo Atlas用Mongo驅動程序
- 10. Mongo Scala驅動程序集合不更新文檔
- 11. 哪個C#驅動程序用於Mongo?
- 12. 使用Ruby驅動程序
- 13. 更新Mongo驅動程序後Update.Setwrap中的空引用異常
- 14. 使用PHP驅動程序的Mongo獨特排序查詢
- 15. 獲得使用驅動程序
- 16. dreamhost上的Mongo PHP驅動程序?
- 17. Mongo C#驅動程序不刪除
- 18. mongo DB - php驅動程序版本
- 19. DBObjects列表 - Mongo Java驅動程序
- 20. C#Mongo驅動程序 - MongoCollection.Group方法
- 21. Mongo C#驅動程序對象分配
- 22. Mongo PHP驅動程序1.2.10與MAMP
- 23. mongo csharp驅動程序版本問題
- 24. Mongo SSL和Java驅動程序
- 25. TDD:Rspec Ruby MongoDB/Ruby Mongo驅動程序
- 26. 爲什麼mongo ruby驅動程序在第一次插入後爲數據散列添加_id鍵?
- 27. 使用C#mongo驅動程序構建查詢
- 28. 如何在新的C++ Mongo驅動程序中使用光標
- 29. 無法使用Mongo Java驅動程序創建數據庫
- 30. 使用Java驅動程序獲取Mongo實例版本
如何使用mutable.Document與insertOne方法? – LoranceChen
注意在新的驅動程序中插入是異步的,所以你必須訂閱Observable,或者將它轉換爲Future並且進行處理... – pianista
爲什麼collection.insertOne()方法不使用可變文檔作爲scala中的參數驅動程序1.1.1? – LoranceChen