这是我的代码。 DbContext.Resources
是IMongoCollection<dynamic>
,因为它非常非结构化。
var resource = await DbContext.Resources.Find(
Builders<dynamic>.Filter.Eq("_id", ObjectId.Parse(id))
).SingleAsync();
结果resource
对象是
[{
"_id": {
"timestamp":1487967980,
"machine":614561,
"pid":30862,
"increment":16022269,
"creationTime":"2017-02-24T20:26:20Z"
},
...
}]
解析此_id
的最佳做法是什么?
答案 0 :(得分:2)
有多种方式来表示和构建ObjectId
。从IMongoCollection
返回的对象对应于您在数据库中看到的实际_id
值,该值使用可以看到here的构造函数进行编码,并由以下字段组成:< / p>
timestamp
(int)machine
hash(int)pid
(简称)increment
(int) ObjectId
应该实现ToString方法,允许您将对象转换为字符串表示形式,但如果由于某种原因您无法使用动态类型,那么可以使用构造函数创建一个新方法,也可以使用ObjectId.Pack方法,这样您就可以转换回timestamp
,machine
,pid
和{{1} }到一个字节数组,也可以用于increment
创建。