解决方案 »

  1.   

    可以的,默认Id映射到_id,其它属性就是普通的字段。
    如果是任意字符串,短一点的不如直接当Id,长一些的就hash后当Id,不是必须用ObjectId
      

  2.   

    不可以。如果这样定义,你的用于各层产品之间传输的“实体”就依赖于 MongoDB.Bson 类库了。这是不合适的。实体中,你应该定义一个 string 类型的 Id 属性,例如public class xxx
    {
    public string Id { get; set; }
    ..省略
    }
    在向 MongoDB 新增一个对象时(并且浸在新增时)需要设置一下这个 Id。你可以自己取 Guid 码转换为字符串,或者使用MongoDB数据库计算的值,例如obj.Id = MongoDB.Bson.BsonObjectId.GenerateNewId().ToString();MongoDB 的驱动会自动将你的 string 类型的 Id 写到 _id 字段(这样就会自动创建主键索引),而不是 Id 字段。
      

  3.   

    不可以。如果这样定义,你的用于各层产品之间传输的“实体”就依赖于 MongoDB.Bson 类库了。这是不合适的。实体中,你应该定义一个 string 类型的 Id 属性,例如public class xxx
    {
    public string Id { get; set; }
    ..省略
    }
    在向 MongoDB 新增一个对象时(并且浸在新增时)需要设置一下这个 Id。你可以自己取 Guid 码转换为字符串,或者使用MongoDB数据库计算的值,例如obj.Id = MongoDB.Bson.BsonObjectId.GenerateNewId().ToString();MongoDB 的驱动会自动将你的 string 类型的 Id 写到 _id 字段(这样就会自动创建主键索引),而不是 Id 字段。
      

  4.   

    试下不就知道了。。string 转objectid 应该ObjectId.Parse吧。。很久没用忘记了。。你用的是MongoDB官方提供的c#驱动吧?你看看就知道了