問題タブ [mongodb-csharp-2.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Mongo ドライバー 2 を使用した IBsonSerializer のアップグレード
Mongo ドライバーの古い実装では、次のようなコードが生成されていました。
新しいインターフェースはまったく異なります。この新しいインターフェイスで以前のコードの実装を開始するにはどうすればよいですか?
c# - MongoDB C# Driver 2.0 でクエリをログに記録するにはどうすればよいですか?
アプリケーションを最新の安定した MongoDB C# Driver 2.0 にアップグレードしました。
移行中、基本的な機能が壊れており、次のような最も単純なクエリでさえthis.collection.Find(e => e.Id == id).SingleOrDefaultAsync()
正しいデータを返しません。
クラス マッピングと規則を確認しましたが、問題を正しく特定するために出力クエリを確認したいと思います。
MongoClient
では、サイドではどのようにすればよいのでしょうか。
データベース レベルでプロファイリングを設定することは可能ですが、データベースを使用するアプリケーションと開発者が複数いるため、良い解決策ではありません。
私のアプリケーションは現在、UI、ビジネス、および EF データ アクセスNinject.Extensions.Logging
を使用しています。log4net
c# - 巻き戻し、MongoDB C# でのグループ集約
新しい C# 2.0 MongoDB ドライバーと集計パイプラインに問題があります。
基本的に、オブジェクトの配列フィールド内で最も人気のある要素を返そうとしています。フィールド タイプは次のとおりIList<string> FavouritePlaceIds { get; set; }
です。
期待どおりに機能する次の MongoDB 集計があります。
ただし、問題は現在、新しい MongoDB ドライバー 2.0 を使用して、それを C# コードに変換しようとしています。集計パイプラインのヘルプとして、次のリンクを使用しています: http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/reading/#unwind
これまでのところ、集計パイプラインには次のものがあります。
そのコードをコンパイルしようとすると、次のメッセージが表示されます。
「BsonDocument」には「FavouritePlaceIds」の定義が含まれておらず、タイプ「BsonDocument」の最初の引数を受け入れる拡張メソッド「FavouritePlaceIds」が見つかりませんでした...
i => i.FavouritePlaceIds
Group() メソッドの最初のパラメーター ( ) でエラーが発生しています。
グループセクションの下にあるリンクのメモを読むと、次のことが言及されています。
$unwind はプロジェクションの一種であるため、戻り値の型を指定する必要があります。
したがって、正しい戻り値の型を指定していないと想定しているため、BsonDocument オブジェクトが必要であり、コンパイルに失敗しています。
では、Group メソッドで使用する正しい戻り値の型を指定するにはどうすればよいでしょうか?
c# - MongoDB の「コレクション」からすべての「ドキュメント」を取得する
MongoDB のコレクションにあるすべてのドキュメントを取得する必要がありますが、方法がわかりません。私は自分の「コレクション」を次のように宣言しました-
そして、このMongoDB チュートリアルで説明されている内容に従いました。私は自分のニーズに合わせて調整しました。
ただし、次のエラーが発生し続けます-
MongoDB.Driver.IMongoCollection には、「Find」の定義と、拡張メソッドの最適なオーバーライド [超長要素] がありません。検索に無効な引数が含まれています。
c# - mongo コレクションをインターフェイス C# にキャストする方法
署名付きのリポジトリがあります:
mongoDb コレクションをこのインターフェイスにキャストするにはどうすればよいですか? (MongoDB ドライバー 2.0)
また、このコードは私を悩ませます
コレクション内のすべてのドキュメントを取得するより良い方法はありますか?
c# - 参照IDスローによるmongodbフィルタリング結果のグループ化
私はこの単純化されたモデルを持っています:
意図的に省略したいくつかのフィールドでフィルターを使用して親にクエリを実行しました。これで、親 ID コレクションができました。最初のクエリで取得した親のみのすべての子をGender.Male
取得し、それらをグループ化して、 aParent
との間のマッピングを作成したいと考えていますList<Child>
。
ただし、これはスローします
いくつかの小さな副次的な質問
childrenFilter
サーバー上で実行され、クライアントが子を受信しないように記述したと思いGender.Female
ますか? それが真実でない場合 - それを行う適切な方法は何ですか? そして、オーバーロードを使用した場合、Linq.Expression
そのフィルターはサーバーまたはクライアントで実行されますか?子はサーバーまたはクライアントでグループ化されていますか?
Group
より効率的なサーバー上で実行するには、どのように記述すればよいですか?
更新 17.06
@CraigWilsonの提案に従って、私は次のことを試しましたg.ToList()
:
これにより、別の例外が発生しました。
未処理の例外: System.AggregateException: 1 つ以上のエラーが発生しました。--- System.InvalidCastException: タイプ 'MongoDB.Driver.Linq.Expressions.SerializationExpression' のオブジェクトをタイプ 'System.Linq.Expressions.MethodCallExpression' にキャストできません。
c# - MongoDB c# ドライバー (バージョン 2) を使用してネストされた条件を検索するにはどうすればよいですか?
カテゴリにグループ化された基準を含むことができるドキュメントのコレクションがあります。構造は次のようになります。
条件の埋め込みドキュメントを作成するために使用しているクラスは次のようになります。
ユーザーは検索する各カテゴリから基準を選択でき (これは として関数に入りますIEnumerable<CriteriaEntity>
)、ドキュメントが返されるためには、選択されたすべての基準が含まれている必要があります。これは私の最初の試みでした:
ただし、「エンティティのシリアル化情報を特定できません...」というエラーが表示されます。どうすればこれを機能させることができますか?