2

Mongoに挿入するとき、_idを定義したくありませんが、_idを読み取りたいです。などのオブジェクトを使用する場合

public class MyClass
    {
        public Object _id { get; set;}
        public String propery1 { get; set; }
    }

私が次のようなことをした場合、私はnull_idを書いています

this.myobj.property1 = "Useless info";    
SafeModeResult result = this.uploads.Insert(uploadedfilecanonical, SafeMode.True);

クエリバインディングとインサートバインディングで別々のクラスタイプを作成する必要がありますか?インサートは_idプロパティを定義しませんが、クエリ可能は定義しますか?

4

2 に答える 2

4

私はあなたの質問を本当に理解していないので、ここで最善を尽くします。挿入を行う場合、_idがnullの場合、nullのままになります。[保存]を使用すると、識別子が存在しない場合は識別子が作成されます。ただし、IDとしてオブジェクトを使用しているため、かなり奇妙です。ObjectId、整数、Guidなどを使用することをお勧めします。

さらに、.NETクラスの従来とは異なる_idの代わりに、「Id」というプロパティを使用できます。または、属性を使用してIDを示すか、規則を作成して共通のパターンを適用することもできます。詳細については、チュートリアルを読むことを強くお勧めします。

于 2012-08-28T15:32:13.623 に答える
0

ここでのみObjectIdGuidIdプロパティの一種として機能します。アンダースコアなし(および属性なし)でプロパティに名前を付けることができます[BsonId]

ObjectIdmongoにとっては当然のことであり、サーバーがそれを作成して応答します。これが最速の方法であるAFAIUです。 Guid.NETの場合は当然ですが、クライアント側のMongoドライバーがこのIDを生成し、mongo用にエンコードします。最後の2行は、.NetGuidがmongoに格納された方法です。最初の数行はナチュラルモンゴObjectIdです。 ここに画像の説明を入力してください

どこかに参照を提供する必要がある限り、ObjectId構造はあなたのために働くはずです。

ただし、Idをシリアル化すると、不快な結果が生じる可能性があります。BsonRepresentationを変更し、次のような属性を使用して文字列を使用することができます。

    public class SimpleTask
    {
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public string Subject { get; set; }
    }
于 2018-02-04T19:56:39.137 に答える