我有一个如下所示的MongoDB文档:
"_id": ObjectID(48kf4kblahblahblah),
"name": "A Person's Name",
"username": "apersonsemail@mail.com",
"password": "a hashed password",
"formulas": [
{
"f_id": ObjectID(4k8s9blahblahblah),
"name": "A Name",
"description": "A description",
"ingredients": [{object}, {object}]
}
]
}
我正在尝试查询基于_id
的文档,然后使用formulas
根据项目的f_id
值从$pull
数组中删除子文档
然而,它没有更新任何东西。
这是参与Express / Node应用程序,我的代码如下所示:
router.delete('/formula-list/:index', function(req, res){
var db = req.db.collection('users');
var index = req.params.index;
db.updateOne({"_id": new ObjectID(req.user.id)}, { $pull: {"formulas": {"f_id": index}} }, function(err, r){
assert.equal(null, err);
assert.equal(1, r.modifiedCount);
req.db.close();
});
res.end();
});
我得到Assertion Error: 1 == 0
我已安慰req.params.index
并获得了值
59683b480986823e10f39fba
如果我控制r
对象matchedCount
为1,那么我知道它也在查找文档。它只是没有做任何事情。
我的问题似乎是very similar to this one,但我不打算删除多个项目,但我不知道这会如何影响我的查询结果。
谢谢。