在MongoDB中使用$ pull来更新文档的内部数组

时间:2018-06-03 07:44:17

标签: database mongodb syntax

我的数据库中有以下对象:

{ "_id" : ObjectId("5aee9a0cda447c1ca8bf415d"), "id" : 4, 
  "categoryName" : "Website", "contestName" : "Free programming books", 
  "description" : "\nA list of free online programming books, categorized by languages/topics\n    ", 
  "nameIds" : [ ObjectId("5b0131d66e3a1c705eb93913"), 
   ObjectId("5b0cf2ffe7405204c6e88e5e"), ObjectId("5b0cf712a891af0506382c29") ] }

并希望删除我的" nameIds"中的最后一个元素。阵列。现在我正试图使用​​

db.contests.update({_id: ObjectId("5aee9a0cda447c1ca8bf415d")}, { $pull: { nameIds: "5b0cf712a891af0506382c29" }})

但尚未开始工作。

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })

为什么$ pull不能以这种格式工作?它找到了元素,但没有以任何方式改变数组。

2 个答案:

答案 0 :(得分:0)

数组中的值为<p id='test'>Hello <button>Click me</button></p> $(document).ready(function(){ $("#test").on("click", 'bottun', changeSize); }); s。在更新操作中,将String文本指定为要删除的值。这与实际值不匹配。使用

ObjectId

代替。

答案 1 :(得分:0)

将objectId包装在ObjectId()内部,如:

ObjectId("5b0cf712a891af0506382c29")

以下查询有效并从nameIds数组中提取相应的项目:

db.contests.update({_id: ObjectId("5aee9a0cda447c1ca8bf415d")}, { 
$pull: { nameIds: ObjectId("5b0cf712a891af0506382c29") }})

文件中的更新:

{
    "_id" : ObjectId("5aee9a0cda447c1ca8bf415d"),
    "id" : 4,
    "categoryName" : "Website",
    "contestName" : "Free programming books",
    "description" : "\nA list of free online programming books, categorized by languages/topics\n    ",
    "nameIds" : [
        ObjectId("5b0131d66e3a1c705eb93913"),
        ObjectId("5b0cf2ffe7405204c6e88e5e")
    ]
}