sql >> Database >  >> NoSQL >> MongoDB

MongoDB (server v 2.6.7) met C#-stuurprogramma 2.0:het resultaat krijgen van InsertOneAsync

Als je dit doet binnen een async methode, dan zal het antwoord van Brduca werken (en heeft de voorkeur), anders kunt u Wait() op de Task geretourneerd van de InsertOneAsync aanroepen om ervoor te zorgen dat uw toepassing lang genoeg in de buurt blijft om de uitzondering voor de dubbele sleutel te zien:

commandsCollection.InsertOneAsync(doc).Wait();

Als het invoegen mislukt vanwege een dubbele sleutel, wordt de Wait() gooit een AggregateException die een MongoWriteException . bevat die de dubbele sleuteldetails bevat.

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

Evenzo, als u await . gebruikt , die een AggregateException . genereert ook.

Om de extra complexiteit van de AggregateException te vermijden de mongo-uitzondering inpakken, kunt u GetAwaiter().GetResult() aanroepen in plaats van 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. Hoe wordt de volgorde van eigenschappen bijgehouden voor sortering in mongodb?

  2. Hoe kan ik de LIKE-operator op mangoest gebruiken?

  3. MongoDB:hoe het aantal sleutels in een document te tellen?

  4. Is er een aanbevolen waarde van COUNT voor de opdracht SCAN / HSCAN in REDIS?