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

Има ли mongoose / mongodb достъп до препратки към обекти в схема по време на агрегат?

няма начин за достъп до реферираните данни на обекта по време на сборния процес, работата, която използвах за моя проект, беше да добавя препратка към собственика във въпросните схеми.

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

И след това използвам за агрегиране директно в поддокумента, за да получа уникалните потребители, които притежават екземплярите на място, по този начин мога да получа резултат от извикване, съответстващ на заявка и място.

Пример:

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

}

това е просто начинът, който открих, за да заобиколя моите конкретни нужди, надявам се, че може да помогне на някого.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Грешка във връзката с MongoLab/PyMongo

  2. как да разреша тази грешка при транзакция в mlab? [MongoError:номерата на транзакциите са ... поддържат заключване на ниво документ]

  3. Как да съхранявате данни на различни езици (не английски) в MongoDB Field и да извличате същите данни?

  4. Как да пагинирам с Mongoose в Node.js?

  5. mongoose:Сортиране по id