2015-09-28 52 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