0

私の文書構造

{
  "_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 が "Mur (1)" に等しい配列ノードを削除しようとしていますが、このクエリを試しましたが、機能しません。

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

1 に答える 1

1

これはうまくいきました:

db.users.update({"progresses.behavior.name" : "Mur (1)"}, { $pull :  {"progresses" : { "behavior.name" : "Mur (1)"} } }, false, true );
于 2013-03-04T13:19:21.697 に答える