không có cách nào để truy cập đối tượng Dữ liệu được tham chiếu trong Quy trình tổng hợp, công việc xung quanh tôi đã làm cho dự án của mình là thêm một tham chiếu đến chủ sở hữu trong các lược đồ được đề cập.
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,
});
Và sau đó được sử dụng để Tổng hợp trực tiếp trên tài liệu phụ để có được những người dùng duy nhất sở hữu các phiên bản của địa điểm, bằng cách này, tôi có thể nhận được kết quả phù hợp với truy vấn và địa điểm.
Ví dụ:
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);
});
});
}
đây chỉ là cách tôi tìm thấy để giải quyết các nhu cầu cụ thể của mình, tôi hy vọng nó có thể giúp ích cho ai đó.