MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB (máy chủ v 2.6.7) với trình điều khiển C # 2.0:Cách lấy kết quả từ InsertOneAsync

Nếu bạn đang thực hiện việc này trong async thì câu trả lời của Brduca sẽ hoạt động (và thích hợp hơn), nếu không bạn có thể gọi Wait() trên Task được trả về từ InsertOneAsync gọi để đảm bảo ứng dụng của bạn tồn tại đủ lâu để thấy ngoại lệ khóa trùng lặp:

commandsCollection.InsertOneAsync(doc).Wait();

Nếu việc chèn không thành công do có một khóa trùng lặp, thì Wait() sẽ ném ra một AggregateException có chứa MongoWriteException chứa các chi tiết chính trùng lặp.

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

Tương tự, nếu bạn đang sử dụng await , điều đó sẽ tạo ra một AggregateException nữa.

Để tránh sự phức tạp thêm của AggregateException gói ngoại lệ mongo, bạn có thể gọi GetAwaiter().GetResult() thay vì 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. Các đối số tổng hợp trong Mongodb cho $ lookup phải là chuỗi

  2. Mô phỏng truy vấn chậm trong mongodb?

  3. Trình tự tăng dần tự động trong NestJs / Mongoose

  4. MongoDB không bằng

  5. mongodb và mongomapper