2015-09-28 54 views
0

我需要添加一個值到mongo數據庫內部對象與數組元素,而不看其他值。有一個建議可以做到這一點。Mongo DB爲數組添加新值

如:取指令集的,

{_id:'ssdeiieirei33',userId: 213828, enrolLment:{"ADMIN":{"TERM1":["COURSE1","COURSE3"]},"STUD":{"TERM2":["COURSE1","COURSE2"]}}} 

在這裏,我需要新的入學(COURSE3)(凸:{ 「TERM2」: 「COURSE3」]})添加到招生柱中的讀它。 這應該是結果;

{_id:'ssdeiieirei33',userId: 213828, enrolLment:{"ADMIN":{"TERM1":["COURSE1","COURSE3"]},"STUD":{"TERM2":["COURSE1","COURSE2","COURSE3"]}}} 

可能嗎?

+1

[(MongoDB Java)$ push into array]可能重複(http://stackoverflow.com/questions/15436542/mongodb-java-push-into-array) – Vishwas

+0

是的,你正在尋找['$ (http://docs.mongodb.org/manual/reference/operator/update/push/)運算符(或者['$ addToSet'](http://docs.mongodb.org/manual/reference/)運營商/更新/ addToSet /)當你想避免重複) – Philipp

+0

我更新了我的真實收藏的問題。對不便 – Dinusha

回答

1

根據您的需要,如果您不想重複,可以使用$addToSet,如果允許重複,可以使用$push

從你的措辭看來,你想使用$addToSet,但請澄清。

UPDATE

您應該使用

collection.update({condition}, 
    { 
     $addToSet: {enrolLment.$userName.$Term : "COURSE3"} 
    }, 
callback) 

注意,我沒測試我的代碼。 enrolLment.$userName.$Term你的情況應該是enrolLment.ADMIN.TERM2。但是如果你有他們的條件,那麼你可以使用表示法來訪問這些變量。

+0

我更新了問題,請檢查 – Dinusha

+0

正如@JohnnyHK所說,你的問題並不真正有效。你想只有物品的數量?然後使用'{...,items:{'pen':3,'book':4}}'。這樣你就不需要任何數組,因爲你基本上有一個哈希映射。 – Pio

+0

我用我的真實系列更新了這個問題。不便之處,敬請諒解 – Dinusha