2013-04-16 70 views
12

Tôi đang sử dụng mongotemplate cho Spring, và tôi đã tự hỏi làm thế nào tôi có thể tăng giá trị của một trong các tài liệu của tôi mà tôi có trong một mảng nguyên tử. Hãy tưởng tượng rằng chúng tôi cóMongodb Giá trị gia tăng bên trong mảng lồng nhau

{'a':1, 
    b:[{_id:341432, 
     c:2 
     }, 
     {_id:341445, 
     c:3 
     }]}; 

Những gì tôi muốn là tăng c 3-4 cho _id 341.445

tôi đã được sử dụng findAndModify nhưng tôi không biết làm thế nào tôi có thể làm cho nó cho một tài liệu lồng nhau trong một mảng.

Trân trọng.

+0

Cho đến nay điều duy nhất mà Tôi tìm thấy được xác định chỉ số của mảng như b.0.c = 11111 bất kỳ ý tưởng tốt hơn? – paul

Trả lời

23

Để cập nhật một phần tử trong một lĩnh vực mảng, bạn có thể sử dụng positional $ operator

Ví dụ, js sau gia c 3-4 cho _id 341.445:

db.collection.update({a:1, "b._id":341445} , {$inc:{"b.$.c":1}}) 
+5

Cảm ơn !, nhưng hãy nhớ rằng câu trả lời của bạn phải được ngoại suy với Java – paul

+0

Điều này sẽ không hoạt động khi truy vấn cập nhật được sử dụng với upsert. –

+0

Cảm ơn bạn Cảm ơn bạn. Tôi đã dành ba + giờ cố gắng để có được điều này để làm việc !!! Câu trả lời chính xác!! –

Các vấn đề liên quan