2011-07-28 5 views
0

フィールドに何かを挿入しようとすると、ログが残っているかどうかを知りたいですお客様のドキュメントの名前です。しかしフィールド名はmongodbでファーストネームの名前に変更されましたか?MongoDB(C#ドライバを使用)、ログはありますか?

私はちょうどそのような何かを試してみましたので、私は、お客様のドキュメントの私のコレクションの姓名前と呼ばれるすべてのフィールドの名前を改名しました。そして、私のC#コードでは、私は仕事に使用されていたクエリを持っています、それは名前 "ジョン"と顧客を削除します。私はそれを実行する、クエリはエラーなしで実行されますが、何もデータベース内で発生します。フィールド名前はもう存在しません。どのようにそれを検出するのですか?

ありがとうございました。 ジョン

[EDIT] 私のC#コード:

public void DeleteOverride(Guid applicationId, string settingKey, string name) 
{ 
    var query = Query.And(Query.EQ("_id", applicationId), Query.EQ("Settings.Key", settingKey)); 
    var update = Update.Pull("Settings.$.Overrides", new BsonDocument {{"Name", name}}); 
    Run(database => database.GetCollection<ApplicationViewModel>("Applications").Update(query, update)); 
} 

は、ここに私の例である:フィールド名前は私のコレクションのアプリケーションのすべての文書についてdababaseにDefinedForのために名前が変更された、私はそれを実行し、例外はスローされていません。私のビジュアルスタジオではCLR例外が有効になっています。

+0

これは奇妙なことです。これにはMongoのログは必要ありません。 C#はエラーを出すはずです。私はC#の男ではありませんが、この種のものは通常、例外を抑制するときに発生します。または何らかの理由でIDEがエラーを表示していない可能性があります。 – Shaunak

+0

はい、これは変です。私はビジュアルスタジオでデバッグモードになっていました。しかし、あなたが正しいです、それは例外をスローするべきC#のコードです。私は私の最初の投稿を編集するつもりです。 – Gui

答えて

1

このようなログはありません。あなたは自分の名前を変更するフィールドに注意する必要があります。

更新プログラムごとに単体テストを作成して、更新プログラムが正しく機能し、名前の変更の問題を検出できることを確認してください。

クエリ/更新の文字列名は公式ドライバの中で最も弱いと思います。

+0

はい、優れたソリューションです。私は、各テストの単体テストを行います。ありがとう! – Gui

1

MongoDBはスキーマフリーのデータベースなので、「フィールドはもう存在しません」というエラーはありません。いずれのフィールドも存在していても存在していなくてもよいため、その存在はエラーではありません。

将来のバージョンのC#ドライバは、コンパイル時にいくつかのエラーを捕捉するLINQをサポートし、C#プロパティ名からBSON要素名へのマッピングも処理するため、ほとんどの不一致が回避されます。

+0

0mg、冷たい。 LinqをMongoDBで使うことを楽しみにしています。夢が実現する! – Gui

関連する問題