2012-04-20 6 views
1

Обычно я манипулирую объектом, создавая им уникальные «коды». (Так что я создаю объект с кодом «тест» и извлекаю объект обратно с помощью objects.find({ code: "test" }). Но я нахожу это странным и контрпродуктивным.Как получить сохраненный объект/вновь созданный объект

Я хотел бы знать, можно ли просто создать новый объект, и получить его сохраненный объект или просто его ObjectId назад однажды спас

это было бы хорошо, если бы мы могли сделать это: objects.save ({имя: «Test Object»});

и получить { ObjectId: "47cc67093475061e3d95369d", name: "Test Object" } в?

Есть ли способ сделать это?

Спасибо!

+0

Какой язык программирования/API вы используете? – Thilo

+0

@Thilo: Я использую драйвер MongoDB для Javascript. – TomShreds

+0

related: http://stackoverflow.com/questions/7860773/concurrency-getting-the-mongodb-generated-id-of-an-object-inserted-via-java-in – Thilo

ответ

1

Это то, что вы ищете?

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

Что ?! Это потрясающе, поэтому, как только объект сохраняется, он получает свой собственный ObjectId ?! Ницца! – TomShreds

+0

Действительно, удивительно. ;) –

1

Я не думаю, что есть API, чтобы получить автоматически сгенерированный идентификатор обратно из базы данных, и нет также никакой реальной необходимости:

Если ваш «код» действительно уникален, вы можете использовать его в качестве объекта Я бы.

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

Поле _id не должен быть типа ObjectId, он просто должен быть уникальным. Если у вас уже есть данные типа первичного ключа, вам не нужно использовать автогенерированный идентификатор. Таким образом, вы также сохраняете один индекс.

Если вы хотите использовать сгенерированный ObjectId, генерировать его самостоятельно, прежде чем звонить сохранить:

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

То, что я хотел, это STOP using "code "и просто манипулировать ObjectID. Основной вопрос заключается в следующем: возможно ли вернуть объект из вызова сохранения? Благодаря! – TomShreds

+0

Вторая часть ваших ответов помогла мне вернуть объект, спасибо! – TomShreds

Смежные вопросы