Uniqpr0
Uniqpr0

Reputation: 11

Is it possible to make arrays equal after update_many in mongodb?

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

Answers (0)

Related Questions