2012-11-19 58 views
2

我只是想用pullAllMongoDB的pullAll對象與多個參數

db.collection.update({'_id': ObjectId(".....")}, { $pullAll : { 'notifications' : [{'type' : type}, {'id': id}]} }) 

這是爲什麼不工作MongoDB中從我的陣列,除去幾個對象?什麼是正確的語法?

更新:

該文件是:

{ 
    "_id" : ObjectId("......"), 
    "notifications" : [ { "type" : "aaa", 
          "id" : "123" }, 
         { "type" : "bbb", 
          "id" : "123" }, 
         { "type" : "ccc", 
          "id" : "234" }] 
} 
+0

文檔的結構如何? – Mihai

+0

我更新的問題 – kschaeffler

+0

看一看我只是想用'db.collection.update此鏈接http://stackoverflow.com/questions/10310837/mongodb-c-update-pullall-not-removing-items – Mihai

回答

0

要使用$ pullAll需要整個對象完全匹配。爲什麼不直接使用$拉,我敢肯定,這將滿足您的需求

+0

({ '_id':ObjectId(「.....」)},{$ pull:{'notifications':[{'type':type},{'id':id}]}},False,True)''和'db.collection.update({'_ id':ObjectId(「.....」)},{$ pull:{'notifications':{'type':type,'id':id}}},假,真)'和我有相同的結果 – kschaeffler

+0

嘗試和$拉只使用「類型」或只有「ID」,只是爲了看看它的工作原理 – Mihai

2

你的問題可能是兩個地方:

首先您的更新有語法問題:

db.collection.update({'_id': ObjectId(".....")}, 
    { $pullAll : 
     { 'notifications' : [{'type' : type}, {'id': id}] 
     } 
    } 
) 

應該是:

db.collection.update({'_id': ObjectId(".....")}, 
    { $pullAll : 
     { 'notifications' : [{'type' : type, 'id': id}] 
     } 
    } 
) 

注意我刪除}, {,加入類型和ID到一個單一的JSON子文檔。

另一個問題是您的數組元素似乎有id值這是形式的「123」字符串 - 你確定你正在傳遞一個字符串,你的更新語句?字符串「123」不等於整數123.