簡體   English   中英

如何在.NET MongoDb驅動程序中解析動態類型的ObjectId

[英]How to parse ObjectId of dynamic type in .NET MongoDb Driver

這是我的代碼。 DbContext.ResourcesIMongoCollection<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的最佳實踐是什么?

有多種表示和構造ObjectId IMongoCollection返回的對象對應於您在數據庫中看到的實際_id值,該值是使用構造函數編碼的,該構造函數可以在此處看到並且由以下字段組成:

  • timestamp (int)
  • machine哈希(int)
  • pid (短)
  • increment (整數)

ObjectId應該實現ToString方法,允許您將對象轉換為其字符串表示形式,但是如果由於某種原因由於動態類型而無法使用它,則可以使用構造函數創建一個新對象,也可以利用ObjectId.Pack方法,它允許您將timestampmachinepidincrement轉換回一個字節數組,該數組也可用於創建ObjectId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM