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

Премахване на вложен документ с условие в MongoDB

Проблемът е, че масивът от поддокументи не е колекция, не можете да сортирате или да направите нещо друго върху него. Но ако имате достъп до който и да е езиков интерфейс като JavaScript или друго, това е възможно. Просто трябва да извлечете списък с поддокументи, да ги сортирате по височина, да запомните първия и след това да изпълните командата, за да го изтеглите от масива въз основа на името и височината му. Може да се направи например с помощта на този JavaScript код точно в MongoDB обвивка:

var min = 0; var name = "";
db.animals.find({ query:{"_id" : 0} }).forEach(
function(record){
    var sets = record.pets; 
    min = sets[0].height;
    sets.forEach(function(set){
        if(set.height <= min) 
            {min=set.height;
            name=set.name;}
            });
    print(min);
    print(name);    
    query = {"_id": 0}
    update = { "$pull" : { "pets" : { "name" : name } } };
    db.animals.update(query, update);
    })

Подозирам, че решението не е най-елегантното, но въпреки това работи.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. BSON библиотека за java?

  2. Не мога да получа allowDiskUse:True за работа с pymongo

  3. запишете обект с двупосочна връзка в mongodb, като използвате официалния c# драйвер

  4. MongoDB, добавете ново { поле :стойност } в съществуващ вграден документ с нотация с точки на множество нива?

  5. Връща конкретен масив от колекция от обекти