MongoDB无法从数组中删除项

MongoDB无法从数组中删除项,mongodb,Mongodb,我一整天都在解决这个问题,但我似乎无法理解MongoDB中的$pull方法有什么问题,我正在尝试从购物车中删除一个项目,我总是得到这样的结果: WriteResult({ "nMatched" : 0, "nUpserted" : 0, "nModified" : 0 }) 我想从模式中的数组“产品”中删除标题为BTC的的项 MongoDB中我的“carts”收集数据: { "userId": {

我一整天都在解决这个问题,但我似乎无法理解MongoDB中的$pull方法有什么问题,我正在尝试从购物车中删除一个项目,我总是得到这样的结果:

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中进一步测试