MongoDB无法从数组中删除项
我一整天都在解决这个问题,但我似乎无法理解MongoDB中的$pull方法有什么问题,我正在尝试从购物车中删除一个项目,我总是得到这样的结果:MongoDB无法从数组中删除项,mongodb,Mongodb,我一整天都在解决这个问题,但我似乎无法理解MongoDB中的$pull方法有什么问题,我正在尝试从购物车中删除一个项目,我总是得到这样的结果: WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 }) 我想从模式中的数组“产品”中删除标题为BTC的的项 MongoDB中我的“carts”收集数据: { "userId": {
WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 })
我想从模式中的数组“产品”中删除标题为BTC的的项
MongoDB中我的“carts”收集数据:
{
"userId": {
"$oid": "5f940f8876ad3e073a2e1e8b"
},
"__v": 0,
"products": [{
"_id": {
"$oid": "5fc6888b1e10cd1b01382ec2"
},
"title": "BTC",
"price": 10000,
"amount": 6
}],
"totalPrice": 60000
}
我过去的两次尝试:
db.carts.update({},
{ $pull: { "products": { title: 'BTC'} } } )
db.carts.update({ _id : '5fc6888b42d86bad7dafa319'},
{ $pull: { "products": { title: 'BTC'} } } )
为什么我都不匹配呢?我想问题是
\u id
不是字符串
ObjectId = require('mongodb').ObjectID;
const id = new ObjectId("idHere")
db.carts.update(
{ _id : id },
{$pull:{ "products":{ title:'BTC' } }}
)
第一个示例不匹配,因为它正在寻找精确匹配
您是否连接到同一个数据库?尝试
use
Yes我已连接到数据库这有帮助吗?非常感谢,问题是它不是ObjectId。关于这一点,我应该通常使用ObjectId还是坚持使用自定义字符串id?只要\u id
是由MongoDB生成的,我认为唯一的方法就是使用ObjectId。不客气@FrsknAlso,您可以检查mongoose,它有为此预先打包的功能(我相信mongodb驱动程序没有)。例如(也有findByIdAndUpdate!)@FrsknI我已经在使用它了,谢谢,我先在终端上测试,然后在express中进一步测试