Reputation: 11
I have mongodb base structure
[{"_Id": 12345678910, "offer_id": [1,2,3,4], "barcodes": [200, 300, 400, 500], "groups":[]"}, {"_Id": 12345678911, "offer_id": [3,4], "barcodes": [200, 300], "groups":[]"}, {"_Id": 12345678912, "offer_id": [1,3,4], "barcodes": [200, 400, 500], "groups":[]"}]
So i'm trying to make groups and i'm query with that code:
result = list(database.central.find())
for items in result:
query_filter = {"$or": [
{'offer_id': {"$in": items['offer_id']}},
{"barcodes": {"$in": items['barcodes']}}
]}
update_operation = {"$addToSet": {"groups": {"id": str(items['_id'])}}}
database.central.update_many(query_filter, update_operation, True)
As i suppose the result must be that all groups included each other _id but As result groups have different sizes but i need it must be equal, how to do that?
example result
[{"_Id": 12345678910, "offer_id": [1,2,3,4], "barcodes": [200, 300, 400, 500], "groups":["12345678911", "12345678910", "12345678912"]}, {"_Id": 12345678911, "offer_id": [3,4], "barcodes": [200, 300], "groups":["12345678910"]}, {"_Id": 12345678912, "offer_id": [1,3,4], "barcodes": [200, 400, 500], "groups":["12345678910", "12345678912"]}]
result that i want
[{"_Id": 12345678910, "offer_id": [1,2,3,4], "barcodes": [200, 300, 400, 500], "groups":["12345678911", "12345678910", "12345678912"]}, {"_Id": 12345678911, "offer_id": [3,4], "barcodes": [200, 300], "groups":["12345678911", "12345678910", "12345678912"]}, {"_Id": 12345678912, "offer_id": [1,3,4], "barcodes": [200, 400, 500], "groups":["12345678911", "12345678910", "12345678912"]}]
Upvotes: 0
Views: 44