Node.js 如何在节点Mongodb中按id删除Json对象?
我有一个名为“EVENTS”的Mongodb集合,在该集合中我有一个数组对象,如下所示:Node.js 如何在节点Mongodb中按id删除Json对象?,node.js,mongodb,mongodb-query,Node.js,Mongodb,Mongodb Query,我有一个名为“EVENTS”的Mongodb集合,在该集合中我有一个数组对象,如下所示: { "Events":[ { "_id":"53ae59883d0e63aa77f7b5b2", "Title":"Title Blank", "Desc":"Description Blank", "Date":"2014-06-04 00:30", "Link":"http://googlepar
{
"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"
}
]
}
关于如果您真正想做的只是“清空”数组,那么您只需要使用带有
.update()
的运算符,并将数组“设置”为空数组:
db.collection.update({},{“$set”:{“事件”:[]},{“mutli”:true})
因此,.update()
操作需要一个“查询”来选择集合中的文档,如图所示的空白查询将选择所有内容。“更新”部分包含的操作仅用空数组替换当前“事件”字段
这里的“multi”选项确保将此应用于匹配的每个文档。默认值为false
,只更新匹配的第一个文档
有关删除选定数组元素的更具体操作,请查看运算符。现在,您的编辑显示,这就是您要执行的操作:
db.collection.update(
{“事件id”:ObjectId(“53ae59883d0e63aa77f7b5b2”),
{“$pull”:{“Events”:{“_id”:ObjectId(“53ae59883d0e63aa77f7b5b2”)}}
)
但是,如果将数组包含在\u id
字段中,则表明您正在使用mongoose,因此ObjectId值将自动转换为:
Model.update(
{“事件编号”:“53ae59883d0e63aa77f7b5b2”},
{“$pull”:{“事件”:{“_id”:“53ae59883d0e63aa77f7b5b2”}},
功能(错误,未受影响){
}
);
非常接近,但我不想清空数组,我只是想删除一个id为的对象。很抱歉这个误导性的例子:)@Pizzy213codes那么你想做什么?看起来您确实在试图通过问题清空数组。也许你应该更新它来说明你实际上在做什么。再次为我之前给出的示例感到抱歉,我刚刚更新了问题,请看:)@Pizzy213codes并回答。我确实提到了$pull
操作符。现在有一个如何使用它的示例。@neilLuun如果我可以问一下,我如何处理按钮单击之类的事件,以便能够调用node.js中的函数?