插入后Dart MongoDB获取ID

bas*_*eps 4 mongodb dart

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

Vad*_*hko 6

默认情况下,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();
  }));
}
Run Code Online (Sandbox Code Playgroud)