sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB (server v 2.6.7) med C# driver 2.0:Sådan får du resultatet fra InsertOneAsync

Hvis du gør dette inden for en async metode, så vil Brducas svar virke (og er at foretrække), ellers kan du ringe til Wait() Task returneret fra InsertOneAsync ring for at sikre, at din applikation forbliver længe nok til at se undtagelsen med dubletnøgle:

commandsCollection.InsertOneAsync(doc).Wait();

Hvis indsættelsen mislykkes på grund af en dubletnøgle, vises Wait() vil kaste en AggregateException der indeholder en MongoWriteException der indeholder de duplikerede nøgledetaljer.

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

På samme måde, hvis du bruger await , der vil kaste en AggregateException også.

For at undgå den ekstra kompleksitet af AggregateException indpakning af mongo-undtagelsen, kan du kalde GetAwaiter().GetResult() i stedet for 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. MongoDB tillader ikke brug af '.' i nøgle

  2. Hvordan deaktiverer man persistens med redis?

  3. Hvordan bruger du arrayFilters med mongoose 5.x.x?

  4. eksportere og importere data fra mongodb ved hjælp af node.js express