2011-10-30 1 views
5

Voglio eseguire semplicemente query MongoDB tramite il driver .net (C#) di MongoDb 10Gen.Utilizzo dei comandi della shell MongoDB sul driver di MongoDB 10Gen

Ad esempio. Voglio usare sotto il comando sul driver

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

Non so come posso fare questo. Non sono interessato a come farlo tramite le classi api di alto livello.

+0

quale autista/lingua? – AlphaB

+0

per .net C# driver – AnyOne

risposta

3

Il driver C# (o qualsiasi altro driver) non è progettato per eseguire "direttamente" comandi di mongo shell. Ecco a cosa serve la shell. Quello che devi fare è tradurre i comandi della shell mongo nelle dichiarazioni C# equivalenti.

Se si desidera eseguire i comandi della shell mongo, quindi eseguirli nella shell mongo.

+0

C# non crea ancora query di shell e quindi lo invia a mongodb per l'esecuzione? In tal caso, perché il driver non mi consente di eseguire query di shell? – AnyOne

+0

La comunicazione tra un driver e il server avviene tramite il protocollo filo. Vedi: http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol. Anche la shell mongo deve tradurre i comandi della shell mongo nel protocollo wire prima di inviarli al server. –

1

È possibile costruire query in C# utilizzando l'interfaccia Query fluente. Quella query può quindi essere attivata verso il database usando il metodo Find su una raccolta Mongo. E.g:

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(); 

La query può essere utilizzata anche con gli aggiornamenti. Es .:

myCollection.Update(
        myQuery, 
        Update.Replace(new MyType(){...}), 
        UpdateFlags.Upsert 
      ); 

Questo ha appena sostituito l'intero documento. Per il controllo di precisione è possibile utilizzare l'API di aggiornamento combinata con il metodo FindAndModify. E.g:

var myUpdate = Update.Inc("n", 1); 
var result = myCollection.FindAndModify(
        myQuery, 
        SortBy.Descending("name"); 
        myUpdate, 
        true // return new document 
      ); 

Verificare http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial per ulteriori informazioni.

+0

Grazie, ma mi è stato chiesto come eseguire query pura tramite driver – AnyOne

+0

A destra, hai provato il metodo Eval sull'oggetto del database. –

+0

Sono stati provati alcuni aspetti diversi sui metodi Eval e RunCommand, ma senza fortuna il driver – AnyOne