Update all documents in colection only if new data differs from current data

Your query has an extra {} in it, the syntax is db.collection.updateMany({filter}, {update}) but you have:

db.collection.updateMany({}. {filter}, {update})

As a start try:

db.getCollection('sales').updateMany(
  {
    $or: [
      { item: { $ne: new_data.item } },
      { price: { $ne: new_data.price } },
      { quantity: { $ne: new_data.quantity } },
      { date: { $ne: new_data.date } },
    ],
  },
  {
    $set: { 
      item: new_data.item,
      price: new_data.price,
      quantity: new_data.quantity,
      date: new_data.date,
    },
  },
)