Reputation: 883
I have PyMongo query - where I'm trying to increment value of a group label value of an array inside the document.
UpdateOne({
"document": ObjectId(document_data),
"result": {'$elemMatch': {
"class_label": {"$regex": label_regex},
"group_label": {'$gt': group_label_data}}}
},
{'$inc': {"result.$[element].group_label": -1}},
{
'arrayFilters': [
{
"element.class_label": label_regex,
"element.group_label": {'$gt': group_label_data}
}
],
'upsert': False
}
)
The error I'm getting for this -
TypeError: upsert must be True or False
Can you please help me out here? I'm new to MongoDB. Please let me know if more info is needed.
Thanks in advance!
Upvotes: 4
Views: 1660
Reputation: 8844
Firstly I suspect you want the update_one()
method rather than the UpdateOne bulk operator.
update_one()
takes upsert and array_filters as parameters, so you need something like:
db.mycollection.update_one(
{
"document": ObjectId(document_data),
"result": {'$elemMatch': {
"class_label": {"$regex": label_regex},
"group_label": {'$gt': group_label_data}}}
},
{'$inc': {"result.$[element].group_label": -1}},
upsert=False,
array_filters=[
{
"element.class_label": label_regex,
"element.group_label": {'$gt': group_label_data}
}
]
)
Upvotes: 6