2012-07-18 82 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