2012-04-20 82 views
1

我通常通過創建唯一的「代碼」來操作對象。 (所以我創建一個代碼爲「測試」的對象,並使用objects.find({ code: "test" })取回對象,但我覺得這很奇怪,反效果。並獲取其保存的對象或只是它的ObjectId回來一次保存如何獲取保存的對象/新創建的對象

這將是很好,如果我們能做到這一點: objects.save({名稱:「測試對象」});

並獲得{ ObjectId: "47cc67093475061e3d95369d", name: "Test Object" }嗎?返回

有沒有辦法做到這一點?

謝謝!

+0

您使用的是什麼編程語言/ API? – Thilo 2012-04-20 02:08:40

+0

@Thilo:我正在使用Javascript的MongoDB驅動程序。 – TomShreds 2012-04-20 02:12:26

+0

相關:http://stackoverflow.com/questions/7860773/concurrency-getting-the-mongodb-generated-id-of-an-object-inserted-via-java-in – Thilo 2012-04-20 02:17:10

回答

1

這是你在找什麼?

> var record = {hello:"goodbye"}; 
> db.test.save(record); 
> record; 
{ "hello" : "goodbye", "_id" : ObjectId("4f90c9106aee6e21b4e55c65") } 
+0

什麼?!這真是太棒了,所以一旦一個對象被保存了,它就會得到它自己的ObjectId?!太好了! – TomShreds 2012-04-20 03:22:07

+0

的確,令人驚歎。 ;) – 2012-04-20 03:42:40

1

我不認爲有一個API來從數據庫中獲取自動生成的ID後面,也沒有真正的需要:

如果你的「代碼」實在是獨特的,你可以使用它作爲對象ID。

objects.save({ _id: "test" }); 

_id字段不必是ObjectId類型,它只是必須是唯一的。如果您已經有一些主鍵類型數據,則不必使用自動生成的ID。這樣,你也可以保存一個索引。

如果你想使用產生的ObjectId,自己生成它,你打電話之前保存:

ObjectId id = new ObjectId(); 
objects.save({ _id: id, something: 12345 }); 
+0

我想要的是停止使用「代碼「並簡單地操作ObjectID。問題的主要觀點是:是否有可能從保存呼叫中取回對象?謝謝! – TomShreds 2012-04-20 02:11:58

+0

答案的第二部分幫助我找回了一個對象,謝謝! – TomShreds 2012-04-20 02:25:09

相關問題