【发布时间】:2016-02-28 04:00:20
【问题描述】:
我有一个包含以下数据的集合:
{
"__v": NumberInt(0),
"_id": ObjectId("565443b1172e19d51f98b0ed"),
"address": "tohana",
"comments": [
{
"_id": ObjectId("5654455fe088d89c20736e3c"),
"comment": "good man",
"uemail": "dinesh@gmail.com",
"uname": "dinesh"
},
{
"_id": ObjectId("565445e471dce6ca20705a84"),
"comment": "nice person",
"uemail": "kr@gmail.com",
"uname": "krishan"
},
{
"_id": ObjectId("5654460e7aa73bec2064060e"),
"comment": "bad person",
"uemail": "Rai",
"uname": "Rahul"
}
],
"email": "nishantg@ocodewire.com"▼,
"name": "Nishant"
}
谁能建议如何从只有子文档 id 的“cmets”键中删除子文档,我要删除吗?
例如我想删除一个id为5654455fe088d89c20736e3c的子文档,所以这个子文档应该被删除。
这是我正在使用的代码:
var Users = require("../app/models/users"); //userModel
app.post('/deleteComment/:id', function(req, res) {
var input = JSON.parse(JSON.stringify(req.body));
var id = req.params.id;//commentId
var userId = input.id;//userId
Users.findByIdAndUpdate(userId, {
'$pull': {
'comments':{ '_id': new ObjectId(someStringValue) }
}
});
});
但这不会删除数据。
【问题讨论】:
-
上面提到的JSON是一个Post请求体?你在为 mongodb 使用 mongoose 包装器吗?
-
好的。完美的。首先,您必须获取带有 id 的完整文档(文档 id 不是评论 id),然后从返回文档中删除评论,就像您可以使用 lodash 或下划线从评论数组中查找和删除该评论一样。再次执行此操作后,保存/更新新的更新文档。有意义吗?
标签: javascript angularjs node.js mongodb mongoose