2011-10-30 28 views
5

Quiero simplemente ejecutar consultas de MongoDB puras a través del controlador .net (C#) de MongoDb 10Gen.Usando comandos de shell MongoDB en el controlador de MongoDB 10Gen

Por ejemplo. Quiero utilizar el siguiente comando en el controlador

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

No estoy seguro de cómo puedo hacer esto. No estoy interesado en cómo hacerlo a través de clases de API de alto nivel.

+0

cual controlador/idioma? – AlphaB

+0

para el controlador .net C# – AnyOne

Respuesta

3

El controlador C# (o cualquier otro controlador) no está destinado a ejecutar "directamente" comandos de mongo shell. Para eso es el caparazón. Lo que debe hacer es traducir los comandos de mongo shell a las declaraciones de C# equivalentes.

Si desea ejecutar comandos mongo shell, ejecútelos en el shell mongo.

+0

C# driver no construye consultas shell y luego lo envía a mongodb para su ejecución? Si es así, ¿por qué el controlador no me permite ejecutar consultas del shell? – AnyOne

+0

La comunicación entre un controlador y el servidor se realiza a través del protocolo de conexión. Ver: http://www.mongodb.org/display/DOCS/Mongo+Wire+Protocol. Incluso mongo shell debe traducir los comandos de mongo shell al protocolo de conexión antes de enviarlos al servidor. –

1

Puede construir consultas i C# utilizando la fluida interfaz de Consulta. Esas consultas se pueden disparar hacia la base de datos utilizando el método Find en una colección de 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 consulta también se puede utilizar con las actualizaciones. Por ejemplo:

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

Esto acaba de reemplazar todo el documento. Para un control detallado, puede usar la API de actualización combinada con el método FindAndModify. Por ejemplo:

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

Salida http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial para más información.

+0

Gracias pero me han preguntado cómo ejecutar la consulta pura a través del controlador – AnyOne

+0

Correcto, ¿ha probado el método Eval en el objeto de la base de datos? –

+0

He intentado algunas cosas diferentes en los métodos Eval y RunCommand pero todavía no hay suerte – AnyOne

Cuestiones relacionadas