2010-12-05 16 views
2

私はmongodbデータベースに基づいて2つのプロジェクトを持っています。 1つのプロジェクトでは、csharp-mongodbと別のノルムドライバを使用します。標準またはcsharp-mongodbドライバを使用する場合、mongodbに新しいフィールドを追加する方法

私はGetCollectionのような一般的な方法でのみデータベースにリクエストします。 私のエンティティに新しいフィールドを追加するにはどうしたらいいですか?その後、私のエンティティをプレゼントユーティリティ - 初め例えば

、 私は

public class MyEntity 
{ 
    public int _id {get;set;} 
    public string Firstname {get;set;} 
    public string Lastname {get;set;} //here is 
} 

は、私が見る新しいフィールドに一方向だけを追加することを決定した数日後に

public class MyEntity 
{ 
    public int _id {get;set;} 
    public string Firstname {get;set;} 
} 

を持っていますデシリアライズして新しいタイプに変換し、bsonにシリアライズします。私は100万以上のレコードを持っていることを理解する上で、難しいことです。

私はCSHARPのMongoDBのドライバはdocumnets :)

答えて

1

ノルムドライバを使用している場合、新規に追加されたフィールドは、挿入と取り込み時に自動的に更新されます。手動デシリアライズを行う必要はありません。

新しいフィールドLastnameは、古いドキュメントの場合はnullとして返されます。挿入すると、この新しいフィールドがドキュメントに追加されます。

+0

ありがとうございます。 –

0

@Antonyで動作する能力を持っていることを知って、あなたは新しいフィールドを取得するときに、すべてのレコードを更新する必要がありますか?怠惰な更新を選択しようとする - 要求の中で各古いレコードを更新する。しかし、新しいスタイルのレコードにはすべてレコードフィールドがあります。

私はsamus driverが好きです。もちろん、BSON文書でも動作しますが、レコードを更新したいときは、MongoDBはその部分ではなく、完全なBSON文書を返します。私はMongoDBの新機能ですが、MongoDBはドキュメントの一部を返すことはできません。あなたのユーティリティのように機能します:get - > deserialize - > update - > serialize - > save;

+0

ここでいくつかのオブジェクトの一部を返すことができます:http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields私はcsharpでどのように実現されたのか分かりません-mongodbドライバ(私はこの操作を私のアプリで実行する必要はありません)。私の問題は:私はMyEntity型で約100 000のレコードを持って、次に私は新しい型(ランタイムエラー)に古い型をdeserializedできないクラスで新しいフィールドを追加します。 mongoドライバがこの値をデフォルト値、つまりdefault(T) –

+0

@Antony、フィールドのサブセットについて素敵な詳細で初期化できればいいと思う) – Edward83

+0

@Antony、ここであなたの質問をhttp:///groups.google.com/group/mongodb-csharpリンクをご記入ください;) – Edward83

関連する問題