MongoDb 10Genの.net(c#)ドライバから純粋なMongoDBクエリを実行したいだけです。MongoDB 10GenのドライバでMongoDBシェルコマンドを使用する
たとえば、私はドライバで以下のコマンドを使用したい
db.people.update({ name:"Joe" }, { $inc: { n : 1 } });
私はこれをどうやって行うことができないのですか?私は高レベルのAPIクラスを使って行う方法には興味がありません。
MongoDb 10Genの.net(c#)ドライバから純粋なMongoDBクエリを実行したいだけです。MongoDB 10GenのドライバでMongoDBシェルコマンドを使用する
たとえば、私はドライバで以下のコマンドを使用したい
db.people.update({ name:"Joe" }, { $inc: { n : 1 } });
私はこれをどうやって行うことができないのですか?私は高レベルのAPIクラスを使って行う方法には興味がありません。
C#ドライバ(または他のドライバ)は、mongoシェルコマンドを「直接」実行するためのものではありません。それがシェルの目的です。あなたがする必要があるのは、mongoシェルコマンドを同等のC#ステートメントに変換することです。
mongoシェルコマンドを実行する場合は、mongoシェルでコマンドを実行します。
C#ドライバはシェルクエリを構築しておらず、実行のためにmongodbに送りますか?もしそうならドライバが私にシェルクエリを実行させないのですか? – AnyOne
ドライバとサーバ間の通信は、ワイヤプロトコルを介して行われます。参照:http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol mongoシェルでさえ、mongoシェルコマンドをワイヤプロトコルに変換してから、サーバーに送信する必要があります。 –
流暢なクエリインターフェイスを使用してクエリを構築することができます。これらのクエリは、MongoコレクションのFindメソッドを使用してデータベースに向かって起動できます。例:
var myDatabase = MongoDatabase.Create(connectionString);
var myCollection = database.GetCollection<MyType>("myCollectionNameInDB");
var myCollection =
var myQuery = Query.EQ("name", "joe");
var someDataFromDB = myCollection.Find(myQuery).FirstOrDefault();
クエリは更新プログラムでも使用できます。例:
myCollection.Update(
myQuery,
Update.Replace(new MyType(){...}),
UpdateFlags.Upsert
);
これで、ドキュメント全体が置き換えられました。 Finegrainedコントロールの場合は、FindAndModifyメソッドと組み合わせたUpdate APIを使用できます。例:
var myUpdate = Update.Inc("n", 1);
var result = myCollection.FindAndModify(
myQuery,
SortBy.Descending("name");
myUpdate,
true // return new document
);
詳細については、http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorialをご覧ください。
どのドライバ/言語ですか? – AlphaB
for .net c#driver – AnyOne