After I run the tests, I note the following documents present:

```
> db.GH501Document.find().pretty()
{
	"_id" : ObjectId("512e75cfe84df1de25000001"),
	"hash" : {
		
	},
	"name" : "AlbumDocId",
	"node" : {
		"type" : "album"
	}
}
{
	"_id" : ObjectId("512e75cfe84df1de25000002"),
	"name" : "AlbumDocNoId",
	"hash" : {
		
	},
	"node" : {
		"name" : "TestAlbum",
		"value" : NumberLong(1),
		"_doctrine_class_name" : "Doctrine\\ODM\\MongoDB\\Tests\\Functional\\Ticket\\GH501Album",
		"type" : "album"
	}
}
{
	"_id" : ObjectId("512e75cfe84df1de25000003"),
	"name" : "ArticleDoc",
	"hash" : {
		
	},
	"node" : {
		"name" : "TestArticle",
		"value" : NumberLong(37),
		"_doctrine_class_name" : "Doctrine\\ODM\\MongoDB\\Tests\\Functional\\Ticket\\GH501Article",
		"type" : "article"
	}
}
```

It definitely looks like [mixed document types](http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/embedded-mapping.html#mixing-document-types) is kicking, but only when you allow Doctrine to generate the top-level document's ID. I don't have an answer for why it's doing that, though. There could be some incompatibility between discriminator maps being defined on the embedded document classes instead of the parent document's EmbedOne or EmbedMany mapping.