5

如何使用 Dart 获取最后一次插入/保存到 mongoDB 的生成的 Id?

4

2 回答 2

7

默认情况下,mongo_dart 让 mongodb 服务器为插入的对象创建 id,并且不提供获取这些 id 的方法。

为了方便您的场景,您可以在插入之前预先创建对象 ID。我添加了新的测试来证明这一点。请注意,_id 字段必须是地图中的第一个字段 - 这是 mongodb 所要求的。

testInsertWithObjectId(){
  Db db = new Db('${DefaultUri}mongo_dart-test');
  DbCollection coll;
  var id;
  var objectToSave;
  db.open().chain(expectAsync1((c){
    coll = db.collection('testInsertWithObjectId');
    coll.remove();
    objectToSave = {"_id": new ObjectId(),"name":"a", "value": 10};
    id = objectToSave["_id"];
    coll.insert(objectToSave);
    return coll.findOne(where.eq("name","a"));
  })).then(expectAsync1((v1){
    expect(v1["_id"],id);
    expect(v1["value"],10);
    db.close();
  }));
}
于 2013-01-07T08:51:08.853 回答
0

如果你插入myObj你的数据库,我很确定你可以做得到myObj["_id"]id的对象。

或者您是否正在处理您不再拥有插入的最后一个对象的句柄的情况?

于 2013-01-06T20:29:38.870 回答