2013-03-04 40 views
0

我的文檔結構MongoDB的拉動查詢不會工作

{ 
    "_id": { "$oid" : "512F57222F2A936C3300198E" }, 
    "createdAt": { "$date": 1362056994000.000000 }, 
    "level": null, 
    "levelAchievements": [ 

    ], 
    "points": 1, 
    "profile": null, 
    "progresses": [ 
    { 
     "behavior": { 
     "_id": { "$oid" : "511D058E52FBF0FD25000004" }, 
     "name": "Active User", 
     "key": "ActiveUser", 
     "points": 0, 
     "timeout": 0 
     }, 
     "behaviorCount": 1, 
     "behaviorParameter": null, 
     "userId": null, 
     "modifiedAt": { "$date": 1362056994000.000000 }, 
     "createdAt": { "$date": 1362056994000.000000 }, 
     "behaviorType": "user" 
    }, 
    { 
     "behavior": { 
     "name": "Mur (1)", 
     "points": 1, 
     "timeout": 0, 
     "_id": { "$oid" : "512F4EADA674A86833000006" } 
     }, 
     "behaviorCount": 1, 
     "behaviorParameter": null, 
     "userId": null, 
     "modifiedAt": { "$date": 1362056994000.000000 }, 
     "createdAt": { "$date": 1362056994000.000000 }, 
     "behaviorType": "user" 
    }, 
    { 
     "behavior": { 
     "_id": { "$oid" : "511D052F52FBF0FD25000002" }, 
     "disabled": false, 
     "name": "Unity Installed", 
     "key": "UnityInstalled", 
     "points": 0, 
     "timeout": 0 
     }, 
     "behaviorCount": 1, 
     "behaviorParameter": null, 
     "userId": null, 
     "modifiedAt": { "$date": 1362056994000.000000 }, 
     "createdAt": { "$date": 1362056994000.000000 }, 
     "behaviorType": "user" 
    } 
    ], 
    "trophyAchievements": [ 

    ], 
    "userId": "1022082379" 
} 

我試圖刪除它們progresses.behavior.name等於陣列節點「穆爾(1)」我試圖此查詢,但它不會工作。

db.users.update({},{$pull : { "progresses" : { "behavior" : { "name" : "Mur (1)" }}}}); 
db.users.update({}, { $pull : {"progresses.behavior.name" : "Mur (1)"} }, false, true); 
+0

不,'$ pull'不喜歡你的工作;如果有的話,它只會與第一個節點一起工作。 – Sammaye 2013-03-04 12:24:03

+0

我該怎麼做我想要的? – mTuran 2013-03-04 12:43:53

回答

1

這一個工作:

db.users.update({"progresses.behavior.name" : "Mur (1)"}, { $pull : {"progresses" : { "behavior.name" : "Mur (1)"} } }, false, true);