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