我需要找到java中最後一個插入文檔的_id。我正在使用2.0.5。如果元素已更新,我在getLastError返回的輸出中看不到'upserted'字段。如果元素被插入,我確實看到它。無論元素是更新還是插入,我都需要獲取_id。除了發出另一個find命令之外,是否有可能以某種方式獲取文檔的_id?我試圖減少不必要的查詢。獲取java中最後一個插入文檔的_id
回答
您可以使用DBCollection.findAndModify()。您可以設置它的參數,以便它將執行upsert並返回包含剛創建/修改的對象的_id的DBObject。
退房的文檔進行了大量詳細信息: http://www.mongodb.org/display/DOCS/findAndModify+Command
附錄:我只是重新審視我的回答,並認識到有一個更好的,更簡單的方法。在文檔通過網絡發送到服務器之前,_id的值始終設置爲客戶端。如果您尚未爲_id分配值,驅動程序會爲您執行此操作。由於客戶端設置了_id,因此您甚至可以在插入操作開始之前知道它是什麼。考慮這個例子。
> var id = ObjectId()
> id
ObjectId("5511062d729ddce46b99ea3f")
> db.test.insert({ _id: id, text:"a trivial experiment"})
WriteResult({ "nInserted" : 1 })
> db.test.find({ _id: id})
{
"_id" : ObjectId("5511062d729ddce46b99ea3f"),
"text" : "a trivial experiment"
}
我相信@Asha想要使用插入的功能,以便可以最大限度地減少所需的查詢量。 – golja
FindAndUpdate將執行upsert並將單個調用中的目標文檔返回給服務器 – blimpyacht
感謝Bryan,我會試試 – Alice
下面的代碼給你最後一次修改記錄:
db.products.find().sort({"$natural":1}).limit(1);
以下代碼會給你最後插入的記錄:
db.products.find().sort({"_id":-1}).limit(1);
db.products.find().sort({"$natural":-1}).limit(1);
- 1. Mongo DB:獲取最後一個已知文檔後插入的所有文檔
- 2. 獲取mongoDB w/Java驅動程序中最後一個插入文檔的ID
- 3. 如何在插入後使用mongo csharp獲取rcently插入文檔的_id?
- 4. 如何獲取一個文檔的_id MongoDB Java
- 5. 獲取最後一個插入的ID
- 6. 從ElasticSearch獲取最後一個文檔
- 7. 獲取最後一個插入ID
- 8. 從最後插入的行中獲取最後一個插入ID
- 9. jQuery文檔中插入的最後
- 10. Mongoddb返回_id插入文檔
- 11. MongoDb Java通過自定義獲取單個文檔_id
- 12. 如何獲取PHP中的最後一個插入的標識
- 13. 獲取MySQL中的最後一個插入的IDS
- 14. 如何在mongo-c-driver或mongo-cxx-driver中插入文檔後獲得`_id`?
- 15. 獲取最後一個插入的最有效方法
- 16. 如何在LINQ中獲取最後一個插入的ID EF
- 17. 如何獲取CakePHP 3.0中的最後一個插入ID?
- 18. 獲取mysql中最後一個插入行的標識
- 19. 如何獲取NEO4J中插入的最後一個內部ID?
- 20. 如何獲取MVC中最後一個插入的ID?
- 21. MongoDB:使用多個併發編寫器獲取最後插入文檔的ObjectId?
- 22. mongoose.js:嵌入文檔的_id
- 23. 基於_id獲取順序文檔
- 24. CursorIndexOutOfBoundsException在獲取最後_id時?
- 25. Rails一個MongoDB,如何獲取插入的最後一個文檔並確保它是線程安全的?
- 26. 如何從Zend Framework中獲取最後一個插入UUID?
- 27. PHP從ODBC連接中獲取最後一個插入標識
- 28. 如何在php中獲取最後一個插入日期MYSQL
- 29. DB2如何從表中獲取最後一個插入ID
- 30. 如何在java中獲取最後插入的ID mysql mysql
我認爲你必須使用另一個查詢。 –