========== 问一个mongodb的问题==========

愚者只看星不看答案 2014-11-10 03:49:45
我想保存一个类似下面的文档

{
_id:mongodb自动产生
,groupID:'字符串'
,token:'字符串'
,projectID:另一个collection的某文档 _id
}


我使用实体类的方法:

public class
{
public ObjectId Id { get; set; }
..省略
请问这里这样写可以吗? public ObjectId ProjectID{get;set;}
}


同时有两个objectid这样会有问题吗?另外如何将一个字符串转换为ObjectId谢谢。
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
游离失所 2014-11-11
  • 打赏
  • 举报
回复
试下不就知道了。。 string 转objectid 应该ObjectId.Parse吧。。很久没用忘记了。。你用的是MongoDB官方提供的c#驱动吧?你看看就知道了
  • 打赏
  • 举报
回复
不可以。 如果这样定义,你的用于各层产品之间传输的“实体”就依赖于 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 字段。
  • 打赏
  • 举报
回复
不可以。 如果这样定义,你的用于各层产品之间传输的“实体”就依赖于 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 字段。
winnowc 2014-11-10
  • 打赏
  • 举报
回复
可以的,默认Id映射到_id,其它属性就是普通的字段。 如果是任意字符串,短一点的不如直接当Id,长一些的就hash后当Id,不是必须用ObjectId

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧