doulianxing4015 2015-02-22 21:09
浏览 47
已采纳

$ pull mongodb没有删除项目

I have a collection:

//the json.
{
"ItemsToDelete" : [ 
        {
            "placeId" : "ChIJIQBpAG2ahYAR_6128GcTUEo",
            "users" : [ 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15")
            ]
        }, 
        {
            "placeId" : "ChIJIQBpAG2ahYAR_6128GcTUEo",
            "users" : [ 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15")
            ]
        }, 
        {
            "placeId" : "ChIJIQBpAG2ahYAR_6128GcTUEo",
            "users" : [ 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15")
            ]
        }
    ]
}  


{
"ItemsToRemove" : [ 
        {
            "ChIJIQBpAG2ahYAR_6128GcTUEo" : [ 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15")
            ]
        }, 
        {
            "ChIJIQBpAG2ahYAR_6128GcTUEo" : [ 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15")
            ]
        }, 
        {
            "ChIJIQBpAG2ahYAR_6128GcTUEo" : [ 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15"), 
                ObjectId("547e4650f3fb0a022110af15")
            ]
        }
    ]
}

I then run this mongo shell query to pull an item off the array and delete:

db.users.update({"_id":ObjectId("54e664c4e7c3b4d3b5413e39")},{$pull:{ItemsToDelete : {placeId:"ChIJIQBpAG2ahYAR_6128GcTUE"}}},{ multi: true })

The array remains unmodified. Any thoughts why this is failing to $pull?

I have tried 'ItemsToDelete.placeId' but that errors out with: error I receive when doing “ItemsToDelete.placeId” => ‘cannot use the part (ItemsToDelete of ItemsToDelete.placeId) to traverse the element’

  • 写回答

1条回答 默认 最新

  • doudeng1870 2015-02-23 06:41
    关注

    You query doesn't pull any item because you are missing o in placeId value.

    > db.users.update(
        {"_id":ObjectId("54e664c4e7c3b4d3b5413e39")},
        {$pull:{ItemsToDelete : {placeId:"ChIJIQBpAG2ahYAR_6128GcTUE"}}},
                                                                    ^
        { multi: true }
      )
    

    Should be

    > db.users.update(
        {"_id":ObjectId("54e664c4e7c3b4d3b5413e39")},
        {$pull:{ItemsToDelete : {placeId:"ChIJIQBpAG2ahYAR_6128GcTUEo"}}},
        { multi: true }
      )
    
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    
    > db.users.find().pretty()
    { "_id" : ObjectId("54eac8d51a0c74438c9dea10"), "ItemsToDelete" : [ ] }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100