2011-10-30 11 views
5

MongoDb 10Genの.net(c#)ドライバから純粋なMongoDBクエリを実行したいだけです。MongoDB 10GenのドライバでMongoDBシェルコマンドを使用する

たとえば、私はドライバで以下のコマンドを使用したい

db.people.update({ name:"Joe" }, { $inc: { n : 1 } }); 

私はこれをどうやって行うことができないのですか?私は高レベルのAPIクラスを使って行う方法には興味がありません。

+0

どのドライバ/言語ですか? – AlphaB

+0

for .net c#driver – AnyOne

答えて

3

C#ドライバ(または他のドライバ)は、mongoシェルコマンドを「直接」実行するためのものではありません。それがシェルの目的です。あなたがする必要があるのは、mongoシェルコマンドを同等のC#ステートメントに変換することです。

mongoシェルコマンドを実行する場合は、mongoシェルでコマンドを実行します。

+0

C#ドライバはシェルクエリを構築しておらず、実行のためにmongodbに送りますか?もしそうならドライバが私にシェルクエリを実行させないのですか? – AnyOne

+0

ドライバとサーバ間の通信は、ワイヤプロトコルを介して行われます。参照:http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol mongoシェルでさえ、mongoシェルコマンドをワイヤプロトコルに変換してから、サーバーに送信する必要があります。 –

1

流暢なクエリインターフェイスを使用してクエリを構築することができます。これらのクエリは、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をご覧ください。

+0

ありがとう、しかし、私はドライバを介して純粋なクエリを実行する方法を尋ねられました – AnyOne

+0

右、あなたはデータベースオブジェクトのEvalメソッドを試してみましたか? –

+0

私はEvalとRunCommandのメソッドでいくつか試してみましたが、運はまだありません – AnyOne

関連する問題