使用字符串为mongodb _id

时间:2016-10-17 19:57:54

标签: c# mongodb

我有一个json文档,我使用mongoimport命令输入了我的mongo db。 我将它设置为" MyDocId",在mongo中查看它,_id被正确设置。 在我的C#代码中,我想使用此_id来阅读本文档:

ObjectId id = ObjectId.Parse("MyDocId");

我在上面的代码中得到了一个例外

3 个答案:

答案 0 :(得分:5)

您可能需要在属性上使用Bson属性。

[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }

在这个已回答的问题中,对这些属性有很好的解释

BsonId vs BsonRepresentation

答案 1 :(得分:0)

ObjectId解析只会解析具有valid format的字符串。在您的情况下,如果文档的{{1}}是一个字符串,您不需要将其解析为ObjectId,只需在查询中使用字符串值。

答案 2 :(得分:0)

MongoDB.Driver 的 2.9 版开始,您还可以使用内置约定 StringIdStoredAsObjectIdConvention

        var pack = new ConventionPack
        {
            new StringIdStoredAsObjectIdConvention()
        };

        ConventionRegistry.Register("Custom Convention", pack, t => true);