2011-07-11 6 views
12

me he encontrado el código siguiente en consola mongo:

db.unicorns.insert({name: 'Dunx', loves: ['grape', 'watermelon']}); 

y ahora tengo algo como esto en mi colección MongoDB:

{name: 'Dunx', loves: ['grape', 'watermelon']} 

Como se puede ver loves es una matriz.

Pregunta

¿Cómo puedo escribir código C#, con el conductor C# oficial, que hace lo siguiente:

db.unicorns.update({name: 'Aurora'}, {$push: {loves: 'sugar'}}) 

El código anterior funciona muy bien en consola mongo.

Respuesta

16

que debe ser algo como esto:

unicorns.Update(Query.EQ("name", "Aurora"), Update.Push("loves", "sugar")); 
+0

cómo hacer esto actualmente usin g Controlador C# 2.0.0 de mongodb? –

+0

@Faraz Ahmad ver la respuesta a continuación –

6

me gustaría ilustran también cómo hacerlo utilizando una sintaxis diferente

var filter = Builders<Unicorn> 
      .Filter.Eq(e => e.Name, "Aurora"); 

var update = Builders<Unicorn>.Update 
     .Push<String>(e => e.Likes, like); 

await fantasyContext.Unicorns.FindOneAndUpdateAsync(filter, update); 
+0

¿Hay alguna forma de que esto se pueda hacer con 'Builder '? Si no, ¿qué necesitas especificar cuando defines el objeto ("Unicornio" en este caso)? – arbitrarystringofletters

0

Para hacer esto con la sintaxis actualizada y regulares BsonDocument s en lugar de los objetos definidos, utilice la siguiente:

var filter = Builders<BsonDocument>.Filter.Eq("name": "Aurora"); 
var update = Builders<BsonDocument>.Update.Push("loves", "sugar"): 

// you can also use the async update method from Alex's answer here 
var result = fantasyContext.Unicorns.UpdateOne(filter, update); 
Cuestiones relacionadas