MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Aktualizacja Mongoose „nie można użyć części (..) do przemierzenia elementu”

Spróbuj użyć pozycyjnego $ operator w aktualizacji, która identyfikuje element w tablicy do aktualizacji bez wyraźnego określenia pozycji elementu w tablicy, ale zawsze będzie to pasować tylko do jednego elementu na raz:

 User.update(
    { 
        "local.email": user,
        "devices.id": { "$ne": deviceID },
        "devices.name": { "$ne": deviceName }
    }, 
    { 
        "$set": { 
            "devices.$.id": deviceID,
            "devices.$.name": deviceName 
        }
    } 
);

Z dokumentacji , pozycyjny operator $ działa jako symbol zastępczy dla pierwszego elementu, który pasuje do dokumentu zapytania, a pole tablicy musi pojawić się jako część dokumentu zapytania, stąd dokument zapytania

"devices.id": { "$ne": deviceID },
"devices.name": { "$ne": deviceName }

zawiera device tablica i będzie pasować do tych dokumentów, w których device tablica id nie jest równa deviceID a nazwa nie jest taka sama jak nazwa, którą próbujesz zaktualizować. Dopasuje to nawet dokumenty, w których device tablica jest pusta.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose/NextJS — Model nie jest zdefiniowany / Nie można nadpisać modelu po skompilowaniu

  2. Jak zapisać tablicę wejść do schematu podrzędnego w zagnieżdżonym schemacie mangusty?

  3. MongoDB $lookup vs Mongoose wypełniać

  4. MongoDB atomowe findOrCreate:findOne, wstaw, jeśli nie istnieje, ale nie aktualizuj

  5. Odwoływanie się do całego dokumentu w MongoDB Aggregation Pipeline