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

Usuń zagnieżdżony dokument z warunkiem w MongoDB

Problem polega na tym, że tablica poddokumentów nie jest kolekcją, nie można na niej sortować ani robić na niej czegoś innego. Ale jeśli masz dostęp do dowolnego interfejsu językowego, takiego jak JavaScript, albo jest to możliwe. Wystarczy wydobyć listę poddokumentów, posortować je według wysokości, zapamiętać pierwszy, a następnie uruchomić polecenie, aby wyciągnąć go z tablicy na podstawie jego nazwy i wysokości. Można to zrobić na przykład za pomocą tego kodu JavaScript bezpośrednio w MongoDB powłoka:

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);
    })

Podejrzewam, że rozwiązanie nie jest najbardziej eleganckie, ale i tak działa.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pole $name musi być obiektem akumulacyjnym

  2. czy procedura istnieje w mongodb?

  3. Nie można połączyć się z MongoDB przez PHP

  4. Zapytanie MongoDB ISODate z PHP

  5. Mongo i Node.js:znajdowanie dokumentu według _id przy użyciu identyfikatora UUID (GUID)