Tôi đang sử dụng trình điều khiển mgo cho MongoDB trong Go.MongoDB trong Go (golang) với mgo: Làm cách nào để cập nhật bản ghi, tìm hiểu xem bản cập nhật có thành công hay không và lấy dữ liệu trong một hoạt động nguyên tử duy nhất?
Ứng dụng của tôi yêu cầu một tác vụ (chỉ với một bản ghi được chọn trong Mongo từ bộ sưu tập có tên là "công việc") và sau đó đăng ký chính nó như một người nhận hàng để hoàn thành tác vụ đó (bản cập nhật cho bản ghi "công việc" đó) như người được giao).
Chương trình sẽ chạy trên một số máy, tất cả đều nói chuyện với cùng một Mongo. Khi chương trình của tôi liệt kê các tác vụ sẵn có và sau đó chọn một nhiệm vụ, các trường hợp khác có thể đã nhận được nhiệm vụ đó và nhiệm vụ hiện tại sẽ không thành công.
Làm cách nào để đảm bảo rằng bản ghi tôi đọc và sau đó cập nhật hoặc không có giá trị nhất định (trong trường hợp này, người được chuyển nhượng) tại thời điểm được cập nhật?
Tôi đang cố gắng để nhận một bài tập, bất kể đó là gì, vì vậy tôi nghĩ trước tiên tôi nên chọn một nhiệm vụ đang chờ xử lý và cố gắng chỉ định nó, giữ nó chỉ trong trường hợp cập nhật thành công.
Vì vậy, câu hỏi của tôi nên được một cái gì đó như:
"Từ tất cả hồ sơ trên 'công việc' bộ sưu tập, cập nhật chỉ là một có asignee = null, thiết lập ID của tôi là bên nhận chuyển nhượng Sau đó, cho tôi. bản ghi đó để tôi có thể thực hiện công việc. "
Làm cách nào để diễn tả điều đó bằng trình điều khiển xe tải cho Go?
Trên thực tế, giải pháp tôi cần là một trong những tux21b được cung cấp. Tôi cần phải retreve tất cả "tùy chọn" sau đó chọn một, sau đó cố gắng để gán nó cho bản thân mình. Nếu không thành công, tôi sẽ thử với người khác. –
Tại sao bạn cần chọn TẤT CẢ các tùy chọn? Bạn có nói rằng bạn chỉ cần chọn trên đó không được thực hiện (aka assignee == null)? –
Bạn nói đúng. Nhu cầu của tôi hóa ra khác với những gì tôi nghĩ khi tôi viết câu hỏi, nhưng câu trả lời của bạn phù hợp với câu hỏi tốt hơn. –