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

Премахване на записи в масив, съдържащи празен масив

Не знам какво опитахте, тъй като просто не е включено във въпроса ви, но най-добрият начин да проверите за празен масив е основно да потърсите къде е 0 индексът не съвпада с $exists :

Inventory.update(
    { "products.rates.0": { "$exists": false } },
    { 
        "$pull": {
            "products": { "rates.0": { "$exists": false } }
        }
    },
    { "multi": true },
    function(err,numAffected) {

    }
)

Частта „заявка“ на .update() декларацията гарантира, че дори се опитваме да докоснем документи, които имат празен масив в "products.rates" . Това не е задължително, но избягва тестването на следното условие на израза „актуализация“ върху документи, където това условие не е true за всеки елемент от масива и по този начин прави нещата малко по-бързи.

Действителната част „актуализация“ се прилага $pull на "products" масив, за да премахнете всеки от тези елементи, където "вътрешните" "rates" е празен масив. Така че "пътят" в $pull всъщност търси вътре в "products" съдържание така или иначе, така че е относително към това, а не към целия документ.

Естествено $pull ще премахне всички елементи, които съвпадат в една операция. "multi" е необходимо само когато наистина искате да актуализирате повече от един документ с израза




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Филтрирайте вложен масив с условия, базирани на стойности на обекти на много нива и ги актуализирайте - MongoDB агрегат + актуализация

  2. Mongo db с Monk:улавяне на грешки и обработка, ако db не работи

  3. Преброяване на съвместни събития с помощта на рамка за агрегиране на Mongo

  4. Избягвайте общото ограничение от 16MB

  5. Как да се отървем от Грешка:OverwriteModelError:Не може да презапише `undefined` модел, след като бъде компилиран.?