我正在开发一个基于mean.js的Web应用程序,该应用程序的一部分是带有标签的项目,类似于一个博客网站,每个博客条目都具有标签。

我到处搜索了一个很好的示例/教程,解释了使用mongodb / mongoose创建多对多关系的最佳方法,但是我似乎找不到任何东西。

每个项目可以有多个标签,我希望用户能够找到具有特定标签的所有项目。

对于实现此目标的正确方法,我将不胜感激。 TIA

最佳答案

对于多对多关系,我发现mongoose-relationship确实很有用。

这是使用mongoose-relationship模块解决该问题的示例:

// In TagsModel.js file ----------------------------------------------
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var relationship = require("mongoose-relationship");

var tagSchema = new schema({
   projects: [{
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Project',
      childPath: 'tags'
   }],
   ....
});

tagSchema.plugin(relationship, {
     relationshipPathName: 'projects'
});
var tagModel = mongoose.model('Tag', tagSchema);
--------------------------------------------------------------------

// In ProjectModel.js file -----------------------------------------
var mongoose = require('mongoose');
var schema = mongoose.Schema;

var Projects = new Schema({
    tags : [{
         type: mongoose.Schema.Types.ObjectId,
         ref: 'Tag'
         }],
    ...
});
var tagModel = mongoose.model('Project', tagSchema);


使用此模型结构,您将能够按特定标签和按项目标签查找项目。

关于node.js - Mongodb多对多关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34373019/

10-09 16:40