2011-10-30 14 views
5

Chcę po prostu wykonywać czyste zapytania MongoDB za pośrednictwem sterownika MongoDb 10Gen .net (C#).Używanie poleceń powłoki MongoDB na sterowniku MongoDB 10Gen

Na przykład. Chcę użyć poniżej polecenia dla sterownika

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

Nie jestem pewien, jak mogę to zrobić. Nie jestem zainteresowany, jak to zrobić, używając klas api wysokiego poziomu.

+0

który sterownik/język? – AlphaB

+0

dla .net C# driver – AnyOne

Odpowiedz

3

Sterownik C# (ani żaden inny sterownik) nie jest przeznaczony do "bezpośredniego" uruchamiania poleceń powłoki Mongo. Po to jest ta muszla. Musisz przetłumaczyć polecenia powłoki Mongo w równoważne instrukcje C#.

Jeśli chcesz uruchomić polecenia powłoki Mongo, uruchom je w powłoce Mongo.

+0

C# sterownik już nie buduje zapytań powłoki, a następnie wysłać go do mongodb do wykonania? Jeśli tak, dlaczego sterownik nie pozwala mi wykonywać kwerend powłoki? – AnyOne

+0

Komunikacja między sterownikiem a serwerem odbywa się za pośrednictwem protokołu wire. Zobacz: http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol. Nawet powłoka mongo musi przetłumaczyć polecenia powłoki mongo do protokołu wire przed wysłaniem ich na serwer. –

1

Możesz konstruować zapytania i C# przy użyciu płynnego interfejsu zapytań. Zapytania te można następnie wystrzelić w kierunku bazy danych przy użyciu metody Znajdź w kolekcji Mongo. Np .:

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

Zapytanie może być również używane z aktualizacjami. Np .:

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

To właśnie zastąpiło cały dokument. W przypadku kontroli ograniczonej można użyć interfejsu API aktualizacji połączonego z metodą FindAndModify. Np:

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

Wyjazd http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial aby uzyskać więcej informacji.

+0

Dzięki, ale zostałem zapytany, jak wykonać czystą kwerendę za pośrednictwem sterownika – AnyOne

+0

Dobrze, czy wypróbowałeś metodę Eval na obiekcie bazy danych. –

+0

Byłem wypróbowany kilka różnych rzeczy na metodach Eval i RunCommand, ale nie szczęścia nadal – AnyOne