如何在节点Mongodb中通过id删除Json对象?

时间:2014-06-28 06:31:27

标签: node.js mongodb mongodb-query

我有一个名为“EVENTS”的Mongodb集合,在集合中我有一个数组对象,如下所示:

{
   "Events":[
      {
         "_id":"53ae59883d0e63aa77f7b5b2",
         "Title":"Title Blank",
         "Desc":"Description Blank",
         "Date":"2014-06-04 00:30",
         "Link":"http://googleparty.com",
         "Event":"Victoria Centre",
         "dateCreated":"28/6/2014  06:58"
      },
      {
         "_id":"53ae59883d0e63aa77f7b5b3",
         "Title":"Hello World",
         "Desc":"hello",
         "Date":"2014-06-04 00:30",
         "Link":"http://linkedinparty.com",
         "Event":"social",
         "dateCreated":"30/2/2014  11:10"
      }
   ]
}

我将如何在node.js中通过id删除一个对象,所以“delete(53ae59883d0e63aa77f7b5b2)”将产生这个:

{
       "Events":[
           {
         "_id":"53ae59883d0e63aa77f7b5b3",
         "Title":"Hello World",
         "Desc":"hello",
         "Date":"2014-06-04 00:30",
         "Link":"http://linkedinparty.com",
         "Event":"social",
         "dateCreated":"30/2/2014  11:10"
          }
       ]
    }

此致

1 个答案:

答案 0 :(得分:2)

如果你真的想要做的就是"空"然后你只需要使用.update()运算符db.collection.update({},{ "$set": { "Events": [] } },{ "mutli": true}) 和"设置"数组为空数组:

.update()

因此false操作需要"查询"要选择集合中的文档,显示的空白查询将选择所有内容。 "更新" section包含$set操作,它只是替换当前的"事件"带有空数组的字段。

" multi"选项确保将其应用于匹配的每个文档。默认值为db.collection.update( { "Events._id": ObjectId("53ae59883d0e63aa77f7b5b2") }, { "$pull": { "Events": { "_id": ObjectId("53ae59883d0e63aa77f7b5b2") } } } ) ,仅更新匹配的第一个文档。

要删除所选数组元素的更具体操作,请查看$set运算符。您的编辑现在显示您要执行的操作:

_id

但是包含带Model.update( { "Events._id": "53ae59883d0e63aa77f7b5b2" }, { "$pull": { "Events": { "_id": "53ae59883d0e63aa77f7b5b2" } } }, function(err,numAffected) { } ); 字段的数组似乎表示您正在使用mongoose,因此会自动转换ObjectId值:

{{1}}