MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB (сървър v 2.6.7) с C# драйвер 2.0:Как да получите резултата от InsertOneAsync

Ако правите това в рамките на async метод, тогава отговорът на Brduca ще работи (и е за предпочитане), в противен случай можете да извикате Wait() на Task върнат от InsertOneAsync извикайте, за да се уверите, че приложението ви остава достатъчно дълго, за да видите изключението за дублиран ключ:

commandsCollection.InsertOneAsync(doc).Wait();

Ако вмъкването е неуспешно поради дублиран ключ, Wait() ще хвърли AggregateException който съдържа MongoWriteException който съдържа дублиращите се ключови подробности.

try
{
    commandsCollection.InsertOneAsync(doc).Wait();
}
catch(AggregateException aggEx)
{
    aggEx.Handle(x => 
    { 
        var mwx = x as MongoWriteException;
        if (mwx != null && mwx.WriteError.Category == ServerErrorCategory.DuplicateKey) 
        {
            // mwx.WriteError.Message contains the duplicate key error message
            return true; 
        }
        return false;
    });
}

По същия начин, ако използвате await , което ще хвърли AggregateException както и.

За да избегнете допълнителната сложност на AggregateException обвивайки изключението mongo, можете да извикате GetAwaiter().GetResult() вместо Wait() :

try
{
    commandsCollection.InsertOneAsync(doc).GetAwaiter().GetResult();
}
catch(MongoWriteException mwx)
{
    if (mwx.WriteError.Category == ServerErrorCategory.DuplicateKey) 
    {
        // mwx.WriteError.Message contains the duplicate key error message
    }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да импортирате .bson файлов формат в mongodb

  2. Вземете позицията на избрания документ в колекцията [mongoDB]

  3. $set еквивалент на MongoDb в неговия java драйвер

  4. Meteor JS:Клиентът не получава данни от Mongo DB

  5. Поправяне на грешки в страницата в MongoDB