Maison > Article > interface Web > Exemple d'opération de requête en cascade agrégée nodejs + mongodb
Cet article présente principalement l'opération de requête en cascade globale nodejs+mongodb et analyse les compétences opérationnelles liées à la requête en cascade de base de données mongodb basée sur nodejs sous forme d'exemples. Les amis dans le besoin peuvent se référer à ce qui suit
Les exemples de cet article sont expliqués. Opération de requête en cascade agrégée nodejs+mongodb utilisée. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants : J'ai récemment terminé un projet nodejs+mongoose et j'ai rencontré l'opération de requête en cascade de mongodb. La situation consiste à mettre en œuvre une liste de classement pour afficher les dix premières personnes qui ont publié les articles les plus valables parmi les clients d'une certaine entreprise (organisation). Tableau des comptes : les informations sur l'entreprise sont stockées dans un tableau des comptes distinct.var AccountSchema = new Schema({ loginname: {type: String}, password: {type: String}, /** * 联系方式 */ //账户公司名 comName: {type: String}, //地址 address: {type: String}, //公司介绍 intro: {type: String} }); mongoose.model('Account', AccountSchema);Tableau clients : La clientèle de l’entreprise.
var CustomerSchema = new Schema({ /** * 基本信息 */ //密码 password: {type: String}, //归属于哪个Account belongToAccount: {type: ObjectId, ref: 'Account'}, //手机号,登录用 mobile: {type: String}, //真实姓名 realname: {type: String} }); CustomerSchema.index({belongToAccount: 1, mobile: 1}, {unique: true}); mongoose.model('Customer', CustomerSchema);tableau des articles
var articleSchema= new Schema({ belongToAccount: {type: ObjectId, ref: 'Account'}, title: {type: String}, text: {type: String}, createTime: {type: Date, default: Date.now}, author: {type: ObjectId, ref: 'Customer'}, //0,待确认,1 有效 ,-1 无效 status: {type: Number, default: 0} }); articleSchema.index({belongToAccount: 1, createTime:-1,author: 1}, {unique: false}); mongoose.model('article', articleSchema);Ce que nous devons faire ici est d'organiser et de trier les articles logiciels par ID de compte → agrégat → auteur en cascade pour trouver le nom de l'auteur et d'autres informations. Le code est le suivant :
exports.getRankList = function (accountid, callback) { AticleModel.aggregate( {$match: {belongToAccount: mongoose.Types.ObjectId(accountid), status: 1}}, {$group: {_id: {customerId: "$author"}, number: {$sum: 1}}}, {$sort: {number: -1}}).limit(10).exec(function (err, aggregateResult) { if(err){ callback(err); return; } var ep = new EventProxy(); ep.after('got_customer', aggregateResult.length, function (customerList) { callback(null, customerList); }); aggregateResult.forEach(function (item) { Customer.findOne({_id: item._id.customerId}, ep.done(function (customer) { item.customerName = customer.realname; item.customerMobile=cusomer.mobile; // do someting ep.emit('got_customer', item); })); }) }); };Le format du résultat renvoyé (il n'y a que deux enregistrements ici, en fait les dix premiers) :
[ { _id: { customerId: 559a5b6f51a446602032fs21 }, number: 5, customerName: 'test2', mobile:22 } , { _id: { customerId: 559a5b6f51a446602041ee6f }, number: 1, customerName: 'test1', mobile: 11 } ]Ce qui précède C'est ce que j'ai compilé pour tout le monde, j'espère que cela sera utile à tout le monde à l'avenir. Articles associés :
Vérification du format d'adresse e-mail en JavaScript
Comment introduire les icônes d'icônes dans les projets Vue
Explication détaillée de l'implémentation Vue.js du code du formulaire de connexion configurable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!