MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализацията на Mongoose 'не може да използва частта (..) за преминаване през елемента

Опитайте да използвате позиционния $ оператор в актуализацията, която идентифицира елемент в масив за актуализиране, без изрично да указва позицията на елемента в масива, но това винаги ще съответства само на един елемент наведнъж:

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

От документи , позиционният оператор $ действа като контейнер за първия елемент, който съответства на документа на заявката, а полето за масив трябва да се появи като част от документа на заявката, следователно документът на заявката

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

съдържа device масив и ще съответства на тези документи, където device масив id не е равно на deviceID и името не е същото като името, което се опитвате да актуализирате. Това дори ще съответства на документи, където device масивът е празен.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Вградено страниране на коментари в mongodb

  2. Връщане на резултатите mongoose в заявката за намиране към променлива

  3. Проактивен мониторинг на MongoDB (ъгъл на Developer Studio/Advisors)

  4. Как да увелича стойност на число в Mongoose?

  5. Изчакване на MongoDB балансира със забавена реплика