2016-08-30 41 views
0

它,我有蒙戈在MongoDB中推元素,如果它不存在

這裏的許多功能更新是一個例子:

db.auto.update({'def.name':'AFFAIRES'},{$push:{ 
"covers":{$each: [{"a":'G06'},{"a":'G07'},{"a":'G03'},{"a":'G04'},{"a":'G07'},{"a":'G30'},{"a":'G34'}, 
{"cover":'G14'}]}}},{multi:true}) 

但是,這個問題,我的收藏可能包含這些變量之一「一」,所以我不需要推它,如果它不,我必須在集合中推它。 所以我的問題是如何告訴mongoDB在推之前驗證,是否有可能? 我的查詢可能包含其他變量也推。

+0

你試過[upsert](https://docs.mongodb.com/manual/reference/method/db.collection.update/#upsert-option)選項嗎? –

+0

不,因爲我所知道的upsert:它推動元素,如果它沒有找到查詢'更新' – chou

回答

0

使用$addToSet - $ addToSet操作符將值添加到數組,除非該值已存在。如果該值已經存在,那麼$ addToSet對該數組不做任何事情。 $ addToSet只確保沒有添加到該集合的重複項目,並且不會影響現有的重複元素。 $ addToSet不保證修改集中元素的特定順序。

相關問題