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

Grupa Mongodb według pola dbref

Kiedyś w podręczniku znajdowała się sekcja, która wyraźnie stwierdzała, że ​​DBRef nie jest obsługiwany w ramach agregacji, wraz z różnymi innymi typami BSON.

Stary fragment przeczytano tak, jak pokazano w tym archiwum grup google wiadomość:

Może nadal gdzieś tam jest, ale po prostu nie mogę go teraz znaleźć :)

Również jak wspomniano w tym wątku wiadomości, poza tym, że nie jest to obsługiwane w ramach agregacji, inną opcją (i jedyną prawdziwą opcją agregacji) jest użycie mapReduce zamiast metody. Jako przykład powłoki:

db.Products.mapReduce(
    function() {
        emit( this.model.$id, { "actives": [this.isActive] } );
    },
    function(key,values) {
        var result = { "actives": [] };
        values.forEach(function(value) {
            value.actives.forEach(function(active) {
                result.actives.push( active );
            });
        });
    },
    { "out": { "inline": 1 } }
)

Nie wygląda to tak ładnie z powodu arbitralnego { "_id": "", "value": { } } struktura wyników mapReduce, ale pozwala na rodzaj agregacji, której szukasz.

Istnieje również odniesienie do tego problemu JIRA:SERVER-14466 , ale nie wytrzymywałbym zbyt dużego ruchu na tym froncie.

Możesz więc użyć mapReduce, ale zaleca się odejście od używania DBRef i zdefiniowanie alternatywnej formy „ręcznych odwołań” albo osadzanie informacji „zbiorów” i „bazy danych” lub poleganie na zewnętrznej definicji takich rzeczy w schemacie aplikacji, w zależności od na Twoje potrzeby. Dopóki przestrzegasz tych samych reguł, możesz używać struktury agregacji do wszystkiego, co ma prawidłowe nazwy właściwości.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ember wielopoziomowa hierarchia danych z osadzonymi zawsze

  2. Wydajność MongoDB przy rosnącej strukturze danych

  3. Indeksowanie geoprzestrzenne Nie znaleziono mapowania dla pola z YAML

  4. Indeks tekstowy MongoDB we wszystkich polach przy użyciu języka Java

  5. Różnica między MongoDB a Mongoose