MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB (server v 2.6.7) dengan driver C# 2.0:Cara mendapatkan hasil dari InsertOneAsync

Jika Anda melakukan ini dalam async metode, maka jawaban Brduca akan berfungsi (dan lebih disukai), jika tidak, Anda dapat memanggil Wait() pada Task dikembalikan dari InsertOneAsync panggilan untuk memastikan aplikasi Anda bertahan cukup lama untuk melihat pengecualian kunci duplikat:

commandsCollection.InsertOneAsync(doc).Wait();

Jika penyisipan gagal karena kunci duplikat, Wait() akan melempar AggregateException yang berisi MongoWriteException yang berisi detail kunci duplikat.

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

Demikian pula, jika Anda menggunakan await , yang akan memunculkan AggregateException juga.

Untuk menghindari kompleksitas tambahan dari AggregateException membungkus pengecualian mongo, Anda dapat memanggil GetAwaiter().GetResult() bukannya 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. Mongodb tidak dimulai di ubuntu

  2. Masalah saat menginstal mongodb menggunakan Homebrew

  3. MongoDB menambahkan bidang baru bernama dengan nilai variabel

  4. Pembaruan dokumen bersarang luwak gagal?

  5. Bagaimana cara menggabungkan dan menggabungkan hasilnya menjadi koleksi?