如何获取已保存的对象/新创建的对象

时间:2012-04-20 01:55:14

标签: mongodb nosql

我通常通过创建唯一的“代码”来操纵对象。 (所以我使用代码“test”创建了一个对象,然后使用objects.find({ code: "test" })获取对象。但我发现这很奇怪并且适得其反。

我想知道是否可以简单地创建一个新对象,并在保存后获取其保存的对象或仅返回其ObjectId?

如果我们能做到这一点,那就太好了: objects.save({name:“Test Object”});

获得{ ObjectId: "47cc67093475061e3d95369d", name: "Test Object" }作为回报。

有没有办法这样做?

谢谢!

2 个答案:

答案 0 :(得分:2)

这是你要找的吗?

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

答案 1 :(得分:1)

我认为没有一个API可以从数据库中恢复自动生成的ID,并且也没有真正需要:

如果您的“代码”非常独特,则可以将其用作对象ID。

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

_id字段不必是ObjectId类型,它必须是唯一的。如果您已经有一些主键类型数据,则不必使用自动生成的ID。这样,您还可以保存一个索引。

如果要使用生成的ObjectId,请在调用save之前自己生成:

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