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

Czy mongoose / mongodb ma dostęp do odwołań do obiektów w schemacie podczas agregacji?

nie ma możliwości uzyskania dostępu do danych, do których odwołuje się obiekt, podczas procesu agregacji, praca, którą zastosowałem w moim projekcie, polegała na dodaniu odniesienia do właściciela w danych schematach.

User = new Schema({
    places:[{type: Schema.Types.ObjectId, ref:'Place'}],
    shouts:[{type: Schema.Types.ObjectId, ref:'Shout'}]
});
Place = new Schema({
    owner:{type: Schema.Types.ObjectId, ref:'Place'},
    name:String,
    description:String,
});
Shout = new Schema({
    owner:{type: Schema.Types.ObjectId, ref:'Place'},
    content:String,
});

A następnie wykorzystany do Agregacji bezpośrednio na poddokumencie, aby uzyskać unikalnych użytkowników, którzy są właścicielami instancji miejsca, w ten sposób mogę uzyskać wynik krzyku pasujący do zapytania i miejsca.

Przykład:

module.exports.askForShoutInPlace = function(req, res){
var pname = new RegExp(req.params.pname, 'i'); 
var stringQ = new RegExp(req.paramos.qcontent, 'i');
Place.aggregate(
    [
       //find Places that match criteria
       {'$match':{'name':pname}},
       //select owner id object to result
       {'$project':{ owner:'$owner'}},
       //group those results to single array with unique ids of users
       {'$group':{_id:'$owner'}}
    ]).exec(function(err, results){
    //find user shouts that match string and belong to owners know to be owners of a place
    Shout.find({'content':stringQ}).where({'owner':{'$in':results}}).exec(function(err, shouts){
       res.send(shouts);
    });
});

}

to jest właśnie sposób, w jaki znalazłem rozwiązanie moich szczególnych potrzeb, mam nadzieję, że może to komuś pomóc.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Funkcja MapReduce w MongoDB - Grupowanie dokumentu według ID

  2. DBRefs (odniesienia do dokumentów Mongo) nie są pobierane chętnie

  3. Tablica filtrów MongoDb

  4. Jaki jest maksymalny rozmiar GridFS w MongoDB?

  5. MongoDB $arrayToObject