我通常通过创建唯一的“代码”来操纵对象。 (所以我使用代码“test”创建了一个对象,然后使用objects.find({ code: "test" })
获取对象。但我发现这很奇怪并且适得其反。
我想知道是否可以简单地创建一个新对象,并在保存后获取其保存的对象或仅返回其ObjectId?
如果我们能做到这一点,那就太好了: objects.save({name:“Test Object”});
获得{ ObjectId: "47cc67093475061e3d95369d", name: "Test Object" }
作为回报。
有没有办法这样做?
谢谢!
答案 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 });