2017-03-29 1 views
0

Nous essayons de mettre à jour un document de MongoDB en utilisant le pilote C# qui compte plus de 150 propriétés à l'aide ReplaceOneAsync et trouvé qu'il prend 90ms faire la même chose, voici l'extrait de code de l'échantillon pour le même:Améliorer MongoDB Mise à jour Performance

collection.ReplaceOneAsync(n => n.key.Equals(key), value, new UpdateOptions { IsUpsert = false }); 

Pourriez-vous s'il vous plaît nous faire savoir s'il existe un moyen efficace de le faire. Notre SLA est de 30ms et notre application est multi threaded.

+0

La clé est-elle indexée? – SJFJ

+0

Avez-vous utilisé la fonctionnalité [expliquez mongodb] (https://docs.mongodb.com/manual/reference/explain-results/) pour voir exactement comment la requête est traitée? –

+0

Oui nous avons indexé @SJFJ –

Répondre

0

Je suis d'accord avec le commentaire de Maksim.

Selon le nombre total de champs dans le document et le nombre de champs que vous souhaitez réellement mettre à jour, vous pouvez envisager d'utiliser une mise à jour au lieu de remplacer. La syntaxe d'une telle opération peut ressembler à ceci:

var update = Builders<MyMongoDbType>.Update 
    .Set(x => x.Name, "Some name") 
    .Set(x => x.EmailAddress, "some email") 
    .CurrentDate(x => x.DateLastUpdated); 

var result = await MyCollection.UpdateOneAsync(x => x.key == "someKey", update);