Database
[{"name":"Some name","products":[{"product_name":"a"},{"product_name":"b"},{"product_name":"c"}]},{"name":"Some name","products":[{"product_name":"c"},{"product_name":"b"},{"product_name":"a"}]},{"name":"Some name","products":[{"product_name":"a"},{"product_name":"b"}]},{"name":"Some name","products":[{"product_name":"c"},{"product_name":"b"},{"product_name":"a"},{"product_name":"d"}]}]
Query
db.collection.update({"name":"Some name"},[{"$set":{"products":{"$let":{"vars":{"new_products":[{"product_name":"b"},{"product_name":"c"},{"product_name":"a"}],"current_products":{/** need this for upsert*/"$ifNull":["$products",[]]}},"in":{"$cond":[{"$setEquals":["$$current_products","$$new_products"]},"$$current_products","$$new_products"]}}}}}],{"upsert":true,"multi":true})