如何使用Dart获得最后插入/保存到mongoDB的生成ID?

最佳答案

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

为了简化您的方案,您可以在插入之前预先创建对象ID。
我添加了新的测试来证明这一点。
请注意,_id字段必须是map中的第一个字段-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();
  }));
}

关于mongodb - Dart MongoDB插入后获取ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14186321/

10-11 14:57