繁体   English   中英

如何在节点Mongodb中按ID删除Json对象?

[英]How do you delete a Json object by id in node Mongodb?

我有一个名为“ 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"
          }
       ]
    }

问候

如果您真正想做的只是“清空”数组,则只需将$set运算符与.update()一起使用,并将数组“设置”为空:

db.collection.update({},{ "$set": { "Events": [] } },{ "mutli": true})

因此, .update()操作使用“查询”来选择集合中的文档,如图所示的空白查询会选择所有内容。 “更新”部分包含$set操作,该操作仅将当前的“事件”字段替换为空数组。

此处的“ multi”选项可确保将其应用于所有匹配的文档。 默认值为false ,将仅更新匹配的第一个文档。

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

db.collection.update(
    { "Events._id": ObjectId("53ae59883d0e63aa77f7b5b2") },
    { "$pull": { "Events": { "_id": ObjectId("53ae59883d0e63aa77f7b5b2") } } }
)

但是,包含_id字段的数组似乎表明您使用的是猫鼬,因此ObjectId值是自动转换的:

Model.update(
    { "Events._id": "53ae59883d0e63aa77f7b5b2" },
    { "$pull": { "Events": { "_id": "53ae59883d0e63aa77f7b5b2" } } },
    function(err,numAffected) {

    }
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM