我一次只能删除(拉出)一个嵌入式文档(此处为“项目”)。
在我的示例中,“ toRemove”是ObjectIds数组(属于cart.items)。
do {
let apiResponse = try JSONDecoder().decode(Response.self, from: data)
let server = apiResponse.server // Here is your server struct.
print(server)
} catch let jsonError {
print(jsonError)
}
这不起作用。
但是,如果我执行 db.collection('users').updateOne(
{ _id: new ObjectId(this._id) },
{$pull: {'cart.items': {'productId': toRemove}}}
)
,它将仅删除第一个文档。
我如何一次将它们全部删除?
答案 0 :(得分:0)
我认为您需要使用$pullAll
而不是$pull
来从数组中删除所有匹配的实例。
db.collection('users').updateOne(
{ _id: new ObjectId(this._id) },
{$pullAll: {'cart.items': {'productId': toRemove}}}
)
详细了解$pullAll here
答案 1 :(得分:0)
我需要使用特殊的“ $ in”属性,以删除其“ productId”位于“ toRemove”数组内的所有“ items”:
return db.collection('users').updateOne(
{ _id: new ObjectId(this._id) },
{$pull: {'cart.items': {'productId': { "$in": toRemove }}}}
)