2016-09-16 3 views
1

私はいくつかの非正規化されたデータストレージにMongoを使用していますが、私は固定したいと思います。[BsonId]フィールドが `_id`の代わりにデータベースのプロパティ名のように指定されていること

私のオブジェクトにはそれぞれのレコードに固有のRegistrationCodeがありますので、それをIDとして使用したいので、[BsonId]を追加してください。ここまでは順調ですね。

実際のデータベースを調べると、このフィールドはRegistrationCodeではなく、_idであることがわかります。実際のデータベースに正しく名前が付けられていることを確認するにはどうすればよいですか?

public class Company 
{ 
    [BsonId] 
    public string RegistrationCode { get; set; } // Why is this named "_id" in the database? 
    // ... 
} 

db

+0

Mongoでは、BindIdが参照するもの(それを適用するプロパティ名)は、一意の主キーとして_idというフィールドが必要です。 – Evk

+0

うーん、私は過去に "_id"フィールドなしでドキュメントを追加したと確信しています。 – sed

+0

よく、あなたはmongoのドキュメントで自分自身を見ることができます - https://docs.mongodb.com/manual/core/document/#document-id-field – Evk

答えて

1

EVKが述べたように、Mongoのコレクション内のすべての文書は、_idフィールドを持っている必要があります - MongoDB Reference Glossaryを参照してください。

'[BsonId]'アトリビュートを追加すると、あなたのRegistrationCodeプロパティの値が_idフィールドに割り当てられます。

慣例では、POCOクラスにIDフィールドを追加する必要があります.IDフィールドは、一意のRegistrationCodeフィールドのクエリ/挿入/更新/削除/インデックスを引き続き可能にします。

public class Company 
{ 
    public ObjectId Id { get; set; } //By convention 

    public string RegistrationCode { get; set; } 
    // ... 
} 
関連する問題