2012-07-18 110 views
0

我的MongoDB集合包含可以包含一系列子文檔的文檔。每個子文檔都需要一種方式讓我唯一標識它,以便我可以替換它或稍後進行更新。爲MongoDB文檔中的集合中的子/子文檔自動生成值

如何讓MongoDB爲集合中的每個子文檔生成一個唯一值?

我正在使用C#MongoDB驅動程序。

{ 
    _id: 'gd37dg67dg63782gd78', 
    name: 'foo' 
    docs: [ 
     { 
      idvalue: 'autogenerated', 
      y: 10 
     }, 
     { 
      idvalue: 'autogenerated', 
      y: 10 
     }, 
     { 
      idvalue: 'autogenerated', 
      y: 10 
     }, 
    ] 
} 
+1

是不是文件的索引有點像ID? – JohnnBlade 2012-07-18 05:46:38

+0

剛剛粘貼了一個示例來演示我在問什麼 – 2012-07-18 05:47:07

回答

3

的MongoDB本身不會爲你做,但你可以做許多文件映射器的子文檔做的,爲它們分配ObjectId值保存在他們面前。這將讓你一個新的,獨特的,足夠的價值,每個從C#驅動這些字段:

ObjectId.GenerateNewId() 

如果您使用的是文檔映射器,看看,看看它如何支持「嵌套的文件」。有一個很好的機會,它會爲你做一點點努力。

+0

我知道django nonrel fork爲您處理嵌入式模型。所以我會認爲其他驅動程序也將 – jdi 2012-07-18 06:00:55

+0

C#驅動程序不會自動執行此操作。自定義的IBsonSerializer可以被編寫來做到這一點,如果有人這麼傾向。 – 2012-07-18 12:30:39