如何将 mongo ObjectID 存储到 SQL Server 中?

LP1*_*P13 6 c# sql-server mongodb

我们正在将一些数据从 MongoDB 传输到 SQL Server。为了在 SQL Server 中存储 mongo 的 objectid,我有一个类型为 的列varbinary(12)

问题#1:这是在 SQL Server 中存储 mongo 对象的正确方法吗?

另外,当我使用转换 objectid 时

select CONVERT(varbinary(12),'54aedb94e6c12b1c0e83385f')
Run Code Online (Sandbox Code Playgroud)

我回来了0x353461656462393465366331

问题#2:在 C# 中,如何将存储的二进制值转换回字符串十六进制值?

问题 #3:我使用数据库优先的 EF。如何在 SQL Server 表中查询匹配的 objectid(考虑到 Objectid 存储为varbinary

   public vod DoWork(string mongoid)
   {
        //how do i get client based on `mongoid` parameter which is string?
        var result = _dbContext.Clients.SingleOrDefault(x=>x.MongoId == ?????)
   }
Run Code Online (Sandbox Code Playgroud)

假设是MongoIdvarbinary 列

pro*_*r79 3

由于这个提议将导致存储空间的增加,因此我们将有可能创建多字段索引。

解决方案:添加将存储额外信息的字段(Pid 时间戳增量 Pid)

var o = new ObjectId();
var o1 = o.Timestamp; //int
var o2 = o.Increment; //int
var o3 = o.Machine; //int
var o4 = o.Pid; //short 
Run Code Online (Sandbox Code Playgroud)

对于特定的 objsctId 我们可以有:

objectID: 57ce88b4857eda2fe48f042f 
Timestamp: 1473153204 
Machine: 8748762 
Pid: 12260 
Increment: 9372719 
Run Code Online (Sandbox Code Playgroud)